繁体   English   中英

Jekyll/Liquid 中的尾随零

[英]Trailing zero's in Jekyll/Liquid

我有看起来像这样的frontmatter:

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

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

请注意, {{ products[0].price }}将输出39.5 我需要它输出39.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 }}

我相信您可以使用一系列过滤器将其组合在一起,但一个快速而愚蠢的解决方案是简单地将您的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"

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

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 }}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM