Ваш number_format
параметр конфигурации должен быть примерно таким же, как '0'
, поэтому десятичные дроби теряются , когда число преобразуется в строку . Я бы никогда не использовал такой number_format
, потому что это сбивает с толку и все. С обычными number_format
, такими как '0.####'
, вы получаете 5.6
, потому что 5/6 - это действительно 5.6, и если вам нужно уточнить это, то вам нужно быть откровенным об этом. Теперь, если вы уверены, что хотите удалить десятичные дроби во время форматирования (но, опять же, я думаю, что это опасная практика), тогда используйте number_format
как '0;;roundingMode=floor'
(начиная с FreeMarker 2.3.24), а затем ${28/5}
будет печать 5
.
Другое, возможно, лучшее решение состоит в том, что если оба числа имеют целочисленные типы Java, то вы выполняете целочисленное деление (например, Java). Это возможно, если установить для конфигурации arithmetic_engine
значение conservative
. Это опять-таки не очень хорошая практика, потому что язык шаблонов не объявляет тип переменных, поэтому не очевидно, что будет делать a/b
. По мере развития модели данных и перехода с BigDecimal
на целочисленный тип Java, это может привести к неправильному выводу.