0

重複の可能性:
この減算がゼロにならないのはなぜですか?

奇妙な状況に遭遇しました。以下のコードが 0 を返さないのはなぜですか? 代わりに、非常に小さな負の数を返しています。

<cfset x = 5448.10-3311.23-2136.87>
<cfoutput>x=#x#</cfoutput>

上記のコードは次のように出力されます: x=4.54747350886E-013

上記のコードを CF9 と CF10 の両方で実行すると、同じ結果が得られました。

どんな助けでも大歓迎です。

4

2 に答える 2

2
<cfset x = PrecisionEvaluate(5448.10-3311.23-2136.87)>
<cfoutput>x=#x#</cfoutput>

ドキュメントPrecisionEvaluate(): http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7fd9.html

于 2012-05-03T21:53:24.910 に答える
0

他の人が述べているように、それは浮動小数点の精度に関連しています。あなたが合理的な結果を得ようとしているなら、私はただ解決策を指摘したかっただけです

<cfset x1 = 5448.19-3311.23-2136.87 />
<cfset x2 = numberformat(x1, "9.99") />
<cfoutput>x1=#x1#<br />x2=#x2#</cfoutput>

結果

x1=0.0899999999997
x2=0.09

numberformat関数は、マスクが指定されると、指定された小数点以下の桁数に数値を丸めます。

于 2012-05-03T18:36:42.670 に答える