1

我正在尝试将浮点值显示为液体脚本中的货币。它似乎只允许您对数字执行此操作,但是我无法将字符串转换为数字(尽管遵循以下关于 SO 的建议:)

{% assign teststring = '202.2400' %}
{% assign testnumeric = 202.2400 %}
teststring: {{ teststring }} <br/>
testnumeric: {{ testnumeric }} <br/>

teststring as money: {{ teststring |money: "GBP" }} <br/>
testnumeric as money: {{ testnumeric |money: "GBP" }} <br/>

{% assign testStringAsNumeric = teststring | plus: 45 %}
test convert teststring to numeric: {{ testStringAsNumeric }} <br/>
test show above as money: {{ testStringAsNumeric |money: "GBP" }}

输出是:

teststring: 202.2400 
testnumeric: 202.24 
teststring as money: 202.2400 
testnumeric as money: £202.24 
test convert teststring to numeric: 202.24000 
test show above as money: 202.24000

我想要的是将字符串值(teststring)显示为钱。所以我需要转换成一个数字,然后显示为钱。

我也尝试过时间过滤器,例如

{% assign testStringAsNumeric = teststring | times: 1 %}

上面的测试显示为金钱:{{ testStringAsNumeric |money: "GBP" }}

但这会返回一个错误:

test show above as money: System.Linq.Enumerable+d__112`1[System.String]

谢谢你的帮助

4

4 回答 4

1

所以我想解决这个问题的几个问题。

首先,当使用货币过滤器时,数字被解释为cents,例如。

Input: {{ 2000 | money }}

Output: $20.00

因此,您下面的行,一旦正确格式化,将显示$2.47.

test show above as money: {{ testStringAsNumeric |money: "GBP" }}

其次,设置过滤器将使用哪种货币的方法money是在 Shopify 管理员内部,而不是在作为参数的液滴内部。因此,一旦您在 Shopify 的管理员中设置货币,您只需编写:

test show above as money: {{ testStringAsNumeric | money }}

第三,使用money过滤器,只保留两个尾随零。

Input: {{ 2040.002020203 | money }}

Ouput: {{ $20.40 }}
于 2016-09-08T16:14:25.900 回答
1

这是我在测试商店中从您的液体代码中得到的输出:

teststring: 202.2400 
testnumeric: 202.24 
teststring as money: Liquid error: wrong number of arguments (2 for 1) 
testnumeric as money: Liquid error: wrong number of arguments (2 for 1) 
test convert teststring to numeric: 247.24 
test show above as money: Liquid error: wrong number of arguments (2 for 1)

将过滤器更改| money: "GBP"为简单| money(Shopify 通常如何使用过滤器)给出:

teststring: 202.2400 
testnumeric: 202.24 
teststring as money: $2.02 !! 
testnumeric as money: $2.02 !! 
test convert teststring to numeric: 247.24 
test show above as money: $2.47 !!

...这似乎按预期工作。(是的,我的开发商店的 shop.money_format 目前是${{ amount }} !!. 它在某些时候让我很开心。)

您是否尝试在应用程序的上下文中使用这些流动语句?如果是这样,则该应用程序对液体代码的解释可能存在问题 - 但正如您所看到的,从纯粹的 Shopify 角度来看,您的代码应该完全按预期工作(无论是否将字符串转换为数字)我建议联系您的应用程序供应商,抱怨事情没有按应有的方式工作。

于 2016-09-13T16:55:55.850 回答
0

根据这个你应该能够做到:

{% assign teststring =  '202.2400' %}
{% assign testnum = teststring | times: 100 %}
teststring as money {{ testnum | money }}
于 2016-09-08T23:37:36.427 回答
0

如果您只有正数,则可以使用abs过滤器将字符串转换为数字。这应该是这样的工作:

{% assign teststring = '202.2400' %}
teststring as money: {{ teststring | abs | money: "GBP" }}

当然,这只有在数字已经是正数时才能正常工作。

于 2016-09-08T14:57:23.370 回答