Apache flex Actionscript';s数字类';toFixed()方法返回奇怪的值

Apache flex Actionscript';s数字类';toFixed()方法返回奇怪的值,apache-flex,actionscript-3,actionscript,air,Apache Flex,Actionscript 3,Actionscript,Air,我正在用数字进行计算,只想打印一个整数(不带小数的数字) 我认为Number类的toFixed()方法可以解决这个问题,而且大部分时间都可以。但经常会返回奇怪的值。以下是两个示例: Number(0.002)。toFixed(0)返回 “0.”而 Number(1.002).toFixed(0)返回 “1”(不含句点) 偶尔,Number(0.002).toFixed(0)返回“1” 不用说,这不是预期的行为。我没有正确地使用这个方法吗 **编辑:** 我知道我只需要做int(0.002)就

我正在用数字进行计算,只想打印一个整数(不带小数的数字)

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

  • Number(0.002)。toFixed(0)
    返回
    “0.”
    Number(1.002).toFixed(0)
    返回
    “1”
    (不含句点)

  • 偶尔,
    Number(0.002).toFixed(0)
    返回
    “1”

不用说,这不是预期的行为。我没有正确地使用这个方法吗

**编辑:**
我知道我只需要做
int(0.002)
就可以得到
0
,但我想了解这种奇怪的行为。

我已经在Flex SDK 3.4和Flex SDK 4.0上进行了测试,它看起来像一个bug,可能会发布在bugs.adobe.com上?虽然我认为这可能与Flash播放器有关,而不是Flex

无论如何,如果您试图将数字转换为不带小数点的字符串,您可以使用以下方法:

Math.round(theNumber).toString()

这将删除点后的所有数字。

这是一个已知的错误。非XY解决方法是使用use Math.round()或仅检查该尾随句点的返回字符串


请参阅JIRA的错误报告:

仅供阅读此问题的读者参考:显然这是,但我想提及的是,我在Flex 4.0 SDK以及当前的Flex 4.1 SDK中看到了这个问题。在AdobeBugs网站上,这是在何时修复的(票证上写着“已解决:02/26/09 01:28 PM”,但不是哪个版本据称包含修复)。

感谢您在flex 4上的测试。我会发布一个bug。但是,当数字=0.902时,您的解决方案将返回“1”,例如,我希望返回“0”。那么使用Math.floor()而不是Math.round()如何?对,Math.floor,谢谢您的更正,心不在焉将是我的末日。