thymeleaf格式化小数的坑

  • A+
所属分类:thymeleaf

都知道用#numbers.formatDecimal来format,但是formatDecimal里的两个参数却搞不太清楚,最坑的是thymeleaf官网中居然没有详细的说明。。。无语。

没办法,只能自己慢慢试了,根据测试的结果,现在来详细说明下。

首先,我的需求是将一个number(9.2)的数字(即整数位最大7位,小数位最大2位)format成3位加逗号。比如:1234567.55

下面是几种写法的输出结果

${#numbers.formatDecimal(num,7,2)} 输出 1234567.55

${#numbers.formatDecimal(num,0,2)} 输出 1234567.55

这个可以看出第二个参数是代表保留多少位小数,这个例子看不出第一个参数的意思。

下面再看另一个例子,比如:1234.55

${#numbers.formatDecimal(num,7,2)} 输出 0001234.55

${#numbers.formatDecimal(num,0,2)} 输出 1234.55

可以看出,第一个参数是整数部分的最大位数,如果不满,则在前面补0,如果第一个参数指定为0.则不补0.

现在的问题是要3位加逗号。${#numbers.formatDecimal(num,0,'POINT',2,'COMMA')} 输出1.234.567,55

${#numbers.formatDecimal(num,0,'COMMA',2,'POINT')} 输出1,234,567.55

注意上面两种写法,第一种是错误的,必须用第二种写法才能得出正确的结果。从结果可以看出,2后面跟的是comma的话就变成了最后2位加一个逗号,2后面跟的是point的话就是最后2位加一个点。

ZPY

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: