freemarker---数字小数点格式化问题

来源:互联网 发布:网站源码音乐连接 编辑:程序博客网 时间:2024/05/16 10:29

保留小数的问题问题 

http://blog.sina.com.cn/s/blog_7db125620101codn.html

http://blog.163.com/sir_876/blog/static/117052232012102854524753/

方法一

    #{number ;m1M2}    m 最少几位小数,M最多几位小数

eg:保留两位小数:<b>¥</b><em>#{goods.spCost! ;m2M2}</em>  原本是${goods.spCost!},在这里去掉$了。


方法二

  ${x?string("0.##")}    

 --- ${(ccgood.spCost!)?string('#.##')}


在开发中很容易忽视一点,输入一个值(可能是小数),输出时如果不做处理,就很容易出现 
隐形的BUG。比如,如果从数据库取出一个0.22的数值,一般的输出${x?if_exists?html}, 
这时是显示0,而不是0.22。 
应该写成${x?if_exists?string.number} 或者 ${x?if_exists.toString()?html} 


freemarker数字格式化可以在两个地方设置,一个是全局的,即在freemarker.properties文件中设置number_format,还有一个是使用string指令来控制数据的输出格式。例如:

${num?string('0.00')}
如果小数点后不足两位,用 0 代替

${num?string('#.##')}
如果小数点后多余两位,就只保留两位,否则输出实际值
输出为:1239765.46

${num?string(',###.00')}
输出为:1,239,765.46
整数部分每三位用 , 分割,并且保证小数点后保留两位,不足用 0 代替

${num?string(',###.##')}
输出为:1,239,765.46
整数部分每三位用 , 分割,并且小数点后多余两位就只保留两位,不足两位就取实际位数,可以不不包含小数点

${num?string('000.00')}
输出为:012.70
整数部分如果不足三位(000),前面用0补齐,否则取实际的整数位

${num?string('###.00')}
等价于
${num?string('#.00')}
输出为:12.70
整数取实际的位数



下面是JS调节小数点的方法

0 0
原创粉丝点击