在ColdFusion的DecimalFormat()函数中有什么用呢?如何获得正确的结果?

StackOverflow https://stackoverflow.com/questions/1428173

  •  07-07-2019
  •  | 
  •  

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

有帮助吗?

解决方案

我认为问题不是 DecimalFormat(),而是典型的浮点舍入错误。

请参阅: PrecisionEvaluate()

其他提示

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>

快速解决方法是将第1行更改为 number1 = NumberFormat(20.5 / 80 * 100,'9.999')

请参阅CF文档 NumberFormat 并进行页面搜索以查看某些特定信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top