Actionscript的Number类'toFixed()方法返回奇怪的值

时间:2010-01-08 08:53:52

标签: flex actionscript-3 actionscript air

我正在用数字进行一些计算,并且只想打印一个整数(没有小数的数字)。

我认为toFixed()类的Number方法可以解决这个问题,而且大部分时间都是如此。但很多时候会返回奇怪的值。以下是两个例子:

  • Number(0.002).toFixed(0)返回 "0."同时 Number(1.002).toFixed(0)返回 "1"(没有期限)

  • 偶尔会Number(0.002).toFixed(0)返回"1"

毋庸置疑,这不是预期的行为。我没有正确使用这种方法吗?

**编辑:** 我知道我必须int(0.002)才能获得0,但我想了解这种奇怪的行为。

3 个答案:

答案 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”,但未说明哪个版本包含此修复程序)。