每日整理真实提问 356 个问题 · 726 个回答 需要系统性的技术文档?看 Shopify 技术百科 1000 篇 → 400-873-8117
已解决 提问于 2 个月前

Liquid 里字符串拼接和数字相加怎么才对

2 个回答 3,676 次浏览 主题与 Liquid 最后活跃 2 个月前
28

写 {% assign total = price + tax %} 得到的是字符串拼接结果,{{ a + b }} 有时变成 12 而不是 3。

泽
阿泽提问者
前端工程师 · Hydrogen / Storefront API
2 个月前提问 · 已收到 2 个回答

2 个回答

已采纳 · 提问者确认解决
20

先把判断放在前面:Liquid 的 + 遇到字符串会按字符串处理,数字需要显式转成数值类型,浮点还要注意精度。

1处理顺序

  1. 数字相加前用 | plus: 0 强制转数值:{% assign n = a | plus: 0 %}。
  2. 金额统一用「分」的整数计算,输出时再除 100 并套 money 过滤器。
  3. 字符串拼接用 | append:,不要用 + 期望自动拼接。
  4. 浮点比较用 round: 2 后再比,避免 0.1 + 0.2 这类精度问题。
  5. 复杂计算抽到 snippet 里,用 {% liquid %} 写多行,可读性和正确率都更高。
验收:计算结果数值正确,金额无多余小数位,字符串拼接无类型混乱。
风 风格技术团队 回答于 2 个月前
19

再补一个:{% assign x = 5 %}{% assign y = '5' %} 之后 x == y 在 Liquid 里是成立的(会做类型转换),所以用 == 判断数字时要格外小心,必要时用 | plus: 0 后比较。

陈 陈工 · Shopify 认证开发者 · 2 个月前

你的处理方式是什么?

写下你实际验证过的步骤,比「我也有这个问题」有用得多。当前版本为静态展示,提交后会由团队整理并回复。

描述你遇到的现象、店铺环境(主题 / 套餐 / 应用)、已经试过哪些操作……
我要单独提问 工作日 10 分钟内回复,可直接加微信 fenggejishu