Жидкость не сгущается на потолке - PullRequest
2 голосов
/ 29 апреля 2019

Я пытаюсь заставить Liquid просто округлить число. Вот мой код:

{% assign loopCount = page.boxCount | plus:0  | divided_by:3 | %}
{{ loopCount | ceil }}

В этом случае loopCount = 4. Я могу подтвердить, что это число, добавив к нему и отобразив результаты.

{% assign loopCount = page.boxCount | plus:0  | plus:3.5 %}
{{ loopCount }}

Показывает 7,5

Однако, когда я делю на 3, что должно быть 1.333 ... мой дисплей показывает 1. Жидкость, кажется, автоматически округляется вниз.

То, что мне нужно, это округлить, чтобы я получил 2. Какой код я должен использовать, чтобы получить ожидаемые результаты?

Спасибо

Редактировать: Я должен отметить, что я знаю о ceil, но я не могу использовать это, если мой номер на самом деле не является десятичным.

1 Ответ

2 голосов
/ 30 апреля 2019

Когда вы делите на целое число, результатом будет целое число. Если вы хотите получить число с плавающей точкой, разделите на число с плавающей точкой (см. «Управление округлением» от: https://shopify.github.io/liquid/filters/divided_by/):

require 'liquid'

source = <<-SRC
{% assign loopCount = page.boxCount | divided_by:3.0 %}
loopCount = {{ loopCount }}
loopCount | ceil = {{ loopCount | ceil }}
SRC

@template = Liquid::Template.parse(source)

puts @template.render('page' => {'boxCount' => 4 })

Результат:

loopCount = 1.3333333333333333
loopCount | ceil = 2

А если ты сделаешь:

require 'liquid'

source = <<-SRC
{% assign loopCount = page.boxCount | divided_by:3 %}
loopCount = {{ loopCount }}
loopCount | ceil = {{ loopCount | ceil }}
SRC

@template = Liquid::Template.parse(source)

puts @template.render('page' => {'boxCount' => 4 })

вы получите:

loopCount = 1
loopCount | ceil = 1
...