2010-01-08 64 views
3

我正在做一些計算與數字,並希望只打印一個整數(沒有小數的數字)。Actionscript的Number類'toFixed()方法返回奇怪的值

我認爲Number類的toFixed()方法可以做到這一點,而且大部分時間都是這樣。但經常會返回奇怪的值。下面是兩個例子:

  • Number(0.002).toFixed(0)返回 "0."Number(1.002).toFixed(0)返回 "1"(無週期)

  • 在一段時間後,Number(0.002).toFixed(0)返回"1"

不用說這不是預期的行爲。我沒有正確使用這個方法嗎?

**編輯:** 我知道我只需要做int(0.002)得到0但我想了解那種奇怪的行爲。

回答

1

我已經測試了Flex SDK 3.4和Flex SDK 4.0,它看起來像一個錯誤,也許發佈在bugs.adobe.com上?雖然我認爲它可能與Flash Player而不是Flex有關。

無論如何,如果你想將數字轉換爲字符串不帶小數位,你可以使用它作爲一個解決辦法:

Math.round(theNumber).toString() 

這將擺脫的點之後的所有數字。

+0

感謝您對flex 4的測試。我會發佈一個bug。 但是,例如,當Number = 0.902時,您的解決方案將返回「1」,並且我希望返回「0」。 –

+3

那麼如何使用Math.floor()而不是Math.round() –

+0

Right,Math.floor,感謝您的糾正,心不在焉會成爲我的終結。 –

0

僅供參考那些讀了這個問題:顯然這是a known bug,但我想提一提我看到這個問題與Flex 4.0 SDK,以及目前的Flex 4.1 SDK。在Adobe BUG站點I've asked for clarification上修復此問題時(該故障單顯示「已解決:02/26/09 01:28 PM」,但不包含涉嫌包含修復程序的版本)。