在学习FreeMarker时,对数字格式化插值产生疑问:
数字格式化插值可采用#{expr;format}形式来格式化数字,其中format可以是:
mX:小数部分最小X位
MX:小数部分最大X位
如下面的例子(网上查的资料):
<#assign x=2.582/>
<#assign y=4/>
#{x; M2} <#-- 输出2.58 -->
#{y; M2} <#-- 输出4 -->
#{x; m2} <#-- 输出2.6 -->
#{y; m2} <#-- 输出4.0 -->
#{x; m1M2} <#-- 输出2.58 -->
#{y; m1M2} <#-- 输出4.0 -->
主要是对中间两个输出值产生了疑问,经过实践发现:#{x; m2}的值应该为2.58,而#{y; m2}的值应该为4.00。
2.6是#{x; m1}的值,4.0是#{y; m1}的值。
同时对两种格式有了更深的理解:mX:小数部分最少要有X位或者只能有X位,不够的自动加0补够,但是超了的话也只会显示X位,多余位数不会显示。MX:小数部分最多有X位,不超出时正常显示,超出时只显示X位。
PS:格式化处理数字时,对超出部分的处理都是四舍五入,而不是截取。