落后于Jekyll/Liquid的零

Joo*_*stS 6 liquid jekyll

我有一个看起来像这样的前线:

products:
- item: item name
  price: 39.50
- item: item number two
  price: 12.50
Run Code Online (Sandbox Code Playgroud)

如何在尾随零的液体中输出这些变量?

请注意,{{ products[0].price }}将输出39.5.我需要输出39.50.

Cai*_*ete 7

这将是一种方法,通过多个步骤:

  • 将小数位数N舍入(例如2),使小数位数均匀;
  • 用小数分隔符分割数字,这样你得到一个包含两个元素的数组,元素0上的积分部分和元素1上的小数部分;
  • 将N个尾随零附加到小数部分,并将字符串截断为N,这样就可以得到N个小数.

{% assign price_split = page.products[0].price | round: 2 | split: "." %}
{% assign integral = price_split[0] %}
{% assign fractional = price_split[1] | append: "00" | truncate: 2, "" %}

Formatted Price: {{ integral }}.{{ fractional }}
Run Code Online (Sandbox Code Playgroud)


Kev*_*man 5

我确信你可以使用一系列过滤器一起破解它,但是一个快速而愚蠢的解决方案就是简单地price用引号括起来使它成为字符串值而不是数字值.在这种情况下,它将完全按照您键入的方式显示,包括任何尾随零.

products:
- item: item name
  price: "39.50"
- item: item number two
  price: "12.50"
Run Code Online (Sandbox Code Playgroud)

如果您需要使用数值进行处理,则可能有两个变量:价格的数字值和价格标签的字符串值.

products:
- item: item name
  price: 39.50
  priceLabel: "39.50"
- item: item number two
  price: 12.50
  priceLabel: "12.50"
Run Code Online (Sandbox Code Playgroud)


Pee*_*lan 5

我知道这是一个较旧的问题,但您可以为此创建自定义过滤器。

module Jekyll
  module PrecisionFilter
    def precision(input, value=0)
      ("%.#{value}f" % input)
    end
  end
end

Liquid::Template.register_filter(Jekyll::PrecisionFilter)
Run Code Online (Sandbox Code Playgroud)

将其另存为_plugins/precision_filter.rb并重新启动您的 jekyll 服务器(如果它正在运行)。它将使您能够像这样设置数字的精度,

{{ price | precision: 2 }}
Run Code Online (Sandbox Code Playgroud)