Jekyll/Liquid 中的尾随零

Trailing zero's in Jekyll/Liquid

我的前言看起来像这样:

products:
- item: item name
  price: 39.50
- item: item number two
  price: 12.50

如何以带尾随零的形式输出这些变量?

注意{{ products[0].price }}会输出39.5。我需要它来输出 39.50.

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

products:
- item: item name
  price: "39.50"
- item: item number two
  price: "12.50"

如果您需要用数值做一些事情,您可以有两个变量:价格的数字值和价格标签的字符串值。

products:
- item: item name
  price: 39.50
  priceLabel: "39.50"
- item: item number two
  price: 12.50
  priceLabel: "12.50"

这是一种分多个步骤完成的方法:

  • 将数字舍入 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 }}

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

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

Liquid::Template.register_filter(Jekyll::PrecisionFilter)

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

{{ price | precision: 2 }}