Liquid Script:将字符串转换为数字以显示为货币

时间:2016-09-08 14:44:30

标签: shopify liquid dotmailer

我试图在液体脚本中显示浮点值作为金钱。它似乎只允许你对数字执行此操作,但是我无法将字符串转换为数字(尽管如下关于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:&#34; GBP&#34; }}

但这会返回错误:

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

感谢您的帮助

4 个答案:

答案 0 :(得分: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 }}

答案 1 :(得分: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角度来看,您的代码应该完全按预期工作(无论是否将字符串转换为数字)I建议联系您的应用供应商,抱怨事情不按预期方式运作。

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

根据this你应该可以做到:

{% assign teststring =  '202.2400' %}
{% assign testnum = teststring | times: 100 %}
teststring as money {{ testnum | money }}