问题描述
< 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>
OUTPUTS:
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()的行为不同。
我认为问题不是 DecimalFormat / code>,但是典型的浮点舍入误差。
请参阅:
<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>
OUTPUTS:
DecimalFormat(25.625): 25.62
DecimalFormat(18.125): 18.13
DecimalFormat(6.875): 6.88
RATHER THAN OUTPUTING:
DecimalFormat(25.625): 25.63
DecimalFormat(18.125): 18.13
DecimalFormat(6.875): 6.88
It seems that a variable that is the result of a mathematical calculation makes DecimalFormat() behave differently. Any quick fix, without digging into java?
I think the problem is not DecimalFormat()
, but the typical floating-point rounding errors.
see: PrecisionEvaluate()
这篇关于什么是这个在ColdFusion的DecimalFormat()函数?如何获得正确的结果?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!