【发布时间】:2016-07-27 21:20:13
【问题描述】:
我们正在处理价值较高的金额。我们在各自的 spark TextInput 中显示格式化的数量。我们使用简单的 mx CurrencyFormatter 来格式化金额值。直到 16 位,我们都没有任何问题。但超过 16 位后,数字会自动四舍五入。我们正在使用具有以下配置的 CurrencyFormatter,
<mx:CurrencyFormatter id="formateer" thousandsSeparatorTo="," decimalSeparatorTo="."
precision="2" currencySymbol="" rounding="none" />
我的输出: 我们没有任何问题,最多 16 位
original-->1234567890123456
Number(txtInput.text)-->1234567890123456
formatted-->1,234,567,890,123,456.00
错误输出:
original-->12345678901234567
Number(txtInput.text)-->12345678901234568
formatted-->12,345,678,901,234,568.00
这里最后一位数字 7 舍入为 8。
错误输出:
original-->12345678901234567890
Number(txtInput.text)-->12345678901234567000
formatted-->12,345,678,901,234,567,000.00
我已经调试了代码并进入了 format() 方法 CurrencyFormatter 。实际上,数字转换出现了问题。我想知道 Number.MAX_VALUE 是 1.79769313486231e+308 。
我还发现了 Number 的另一种奇怪行为。我在下面描述,
var a:Number = 2.03;
var b:Number = 0.03
var c:Number = a- b;
trace("c --> "+c);
Output : c --> 1.9999999999999998
这种输出只针对这个数字。
请建议我如何解决此问题或建议我一种解决方法。
提前致谢。 Vengatesh s
【问题讨论】:
-
在您的最后一个示例中,使用 c.toFixed(2) 来查看预期结果。
标签: actionscript-3 flex4 flex3 flex4.6