我正在用数字进行一些计算,并且只想打印一个整数(没有小数的数字)。
我认为toFixed()
类的Number
方法可以解决这个问题,而且大部分时间都是如此。但很多时候会返回奇怪的值。以下是两个例子:
Number(0.002).toFixed(0)
返回
"0."
同时
Number(1.002).toFixed(0)
返回
"1"
(没有期限)
偶尔会Number(0.002).toFixed(0)
返回"1"
毋庸置疑,这不是预期的行为。我没有正确使用这种方法吗?
**编辑:**
我知道我必须int(0.002)
才能获得0
,但我想了解这种奇怪的行为。
答案 0 :(得分:7)
这是一个已知的错误。 unsexy解决方法是使用Math.round()或只检查返回的字符串。
请在此处查看有关JIRA的错误报告:http://bugs.adobe.com/jira/browse/FP-1595
答案 1 :(得分:1)
我已经在Flex SDK 3.4和Flex SDK 4.0上测试了它看起来像一个bug,也许发布在bugs.adobe.com上?虽然我认为它可能与Flash Player有关,而不是Flex。
无论如何,如果您尝试将数字转换为没有小数位的字符串,您可以将其用作解决方法:
Math.round(theNumber).toString()
这将消除点后的所有数字。
答案 2 :(得分:0)
对于那些阅读此问题的人来说,仅供参考:显然这是a known bug,但我想提一下我在Flex 4.0 SDK以及当前的Flex 4.1 SDK中看到这个问题。在Adobe错误网站I've asked for clarification上修复此问题时(票证显示“已解决:02/26/09 01:28 PM”,但未说明哪个版本包含此修复程序)。