如何处理此强烈反对在ColdFusion的DecimalFormat的()函数? 我如何得到正确

2019-07-18 03:24发布

<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吗?

Answer 1:

我觉得这个问题是不是DecimalFormat()但典型的浮点舍入误差。

见: PrecisionEvaluate()



Answer 2:

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>


Answer 3:

甲快速修复是改变第1行至number1 = NumberFormat(20.5/80 * 100,'9.999')



Answer 4:

请参阅CF文档的NumberFormat并做一轮网页搜索,看看一些具体的信息。



文章来源: What is up with this in ColdFusion's DecimalFormat() function? How do I get the correct result?