Trailing zero's in Jekyll/Liquid

This would be one way to do it, in multiple steps:

  • Round the number N decimal places (e.g. 2) so decimals have a uniform size;
  • Split the number by the decimal separator, so you get an array with two elements, with the integral part on element 0, and the fractional part on element 1;
  • Append N trailing zeros to the fractional part, and truncate the string by N, so you get exactly N decimals.

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

I'm sure you can hack it together using a series of filters, but a quick and dumb solution would be to simply wrap your price in quotation marks to make it a string value instead of a number value. In that case, it will come out exactly as you typed it, including any trailing zeroes.

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

If you need to do stuff with the numeric value, you could have two variables: a number value for the price and a string value for the price label.

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

I know this is an older question but you can create a custom filter for this.

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

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

Save this as _plugins/precision_filter.rb and restart your jekyll server (if its running). It will give you the ability to set the precision on a number like so,

{{ price | precision: 2 }}

Tags:

Liquid

Jekyll