<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
而不是OUTPUTING:
DecimalFormat的(25.625):25.63
DecimalFormat的(18.125):18.13
DecimalFormat的(6.875):6.88
看来,一个变量,它是一个数学计算的结果使得DecimalFormat的()表现不同。 任何速战速决,没有挖掘到java吗?
我觉得这个问题是不是DecimalFormat()
但典型的浮点舍入误差。
见: PrecisionEvaluate()
DecimalFormat的是格式化函数。 不是数学函数。 它的工作是不是圆你的号码给你,可惜的是CF为小数缺乏良好的数学函数,所以你必须写自己的。
这是一个人的CF LiveDocs中页上写了一轮():
<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>
甲快速修复是改变第1行至number1 = NumberFormat(20.5/80 * 100,'9.999')
请参阅CF文档的NumberFormat并做一轮网页搜索,看看一些具体的信息。
文章来源: What is up with this in ColdFusion's DecimalFormat() function? How do I get the correct result?