<cfset number1 = 20.5/80 * 100 />
<cfset number2 = 18.125 />
<cfset number3 = 6.875 />
<cfoutput>
DecimalFormat(#number1#): #DecimalFormat(number1)#<br />
DecimalFormat(#number2#): #DecimalFormat(number2)#<br />
DecimalFormat(#number3#): #DecimalFormat(number3)#
</cfoutput>
输出:
DecimalFormat(25.625):25.62
DecimalFormat(18.125):18.13
DecimalFormat(6.875):6.88
不仅仅是输出:
DecimalFormat(25.625):25.63
DecimalFormat(18.125):18.13
DecimalFormat(6.875):6.88
似乎是数学计算结果的变量使得DecimalFormat()的行为不同。任何快速修复,无需深入研究java?
答案 0 :(得分:4)
我认为问题不是DecimalFormat()
,而是典型的浮点舍入错误。
答案 1 :(得分:2)
DecimalFormat是一种格式化函数。不是数学函数。它的工作不是为你量数,不幸的是CF缺少小数的良好数学函数,所以你必须自己编写。
以下是有人在圆形()的CF livingocs页面上写道:
<cffunction name="roundDecimal" returntype="numeric">
<cfargument name="num" type="numeric" required="yes">
<cfargument name="decimal" type="numeric" default="2" required="no">
<cfreturn round(num*10^decimal)/10^decimal />
</cffunction>
答案 2 :(得分:0)
快速解决方法是将第1行更改为==
答案 3 :(得分:-1)
请参阅CF文档NumberFormat并进行页面搜索以查看一些具体信息。