Flash浮點(diǎn)運(yùn)算注意事項(xiàng)及解決方法
在進(jìn)行Flash編程過(guò)程中,常常需要進(jìn)行浮點(diǎn)運(yùn)算。然而,浮點(diǎn)運(yùn)算有一個(gè)特點(diǎn),稍有不慎就可能出錯(cuò)。本文將介紹一些需要注意的細(xì)節(jié)。1. 創(chuàng)建作品并添加代碼首先,打開Flash軟件,并選擇“ActionSc
在進(jìn)行Flash編程過(guò)程中,常常需要進(jìn)行浮點(diǎn)運(yùn)算。然而,浮點(diǎn)運(yùn)算有一個(gè)特點(diǎn),稍有不慎就可能出錯(cuò)。本文將介紹一些需要注意的細(xì)節(jié)。
1. 創(chuàng)建作品并添加代碼
首先,打開Flash軟件,并選擇“ActionScript3.0”創(chuàng)建一個(gè)名為“太陽(yáng)坐標(biāo)”的作品。接下來(lái),在需要輸入代碼的幀上右擊,選擇“動(dòng)作”。在“動(dòng)作”面板中輸入以下代碼。
2. 改變x坐標(biāo)值
現(xiàn)在,如果我們想要改變x坐標(biāo)值并使其增加2.2,可以使用如下代碼:
```actionscript
x 2.2;
```
3. 使用trace命令進(jìn)行測(cè)試
為了測(cè)試增加后的值是多少,我們可以使用trace命令。代碼如下:
```actionscript
trace(x);
```
通過(guò)執(zhí)行這段代碼,我們可以得到正確的結(jié)果。然而,現(xiàn)在讓我們嘗試使用“”命令來(lái)比較x坐標(biāo)值是否與增加后的值相等。
4. 測(cè)試結(jié)果出現(xiàn)差異
通過(guò)執(zhí)行下述代碼,我們發(fā)現(xiàn)測(cè)試結(jié)果為false,也就是說(shuō)兩者不相等。
```actionscript
trace(x 2.2);
```
5. 引起誤差的原因
為了解釋為什么會(huì)出現(xiàn)這種情況,我們直接測(cè)試一下x坐標(biāo)值。
```actionscript
trace(x);
```
通過(guò)測(cè)試結(jié)果可以看出,相加后的數(shù)值與兩數(shù)相加的和“3.3”不同。在Flash中,整數(shù)計(jì)算沒(méi)有誤差,但浮點(diǎn)數(shù)計(jì)算總會(huì)出現(xiàn)誤差。因此,在使用“”判斷時(shí),值為false。
6. 解決方法
在Flash中,對(duì)于浮點(diǎn)數(shù),我們不能使用“”來(lái)判斷兩個(gè)數(shù)是否相等。如果需要進(jìn)行循環(huán)判斷,應(yīng)使用大于或小于符號(hào)。如果一定要判斷浮點(diǎn)數(shù)相等,要求兩數(shù)之間差別很小,而不是完全相等。
例如,我們可以使用以下形式進(jìn)行判斷:
```actionscript
Math.abs(x - 2.2) < 0.0001
```
這樣,通過(guò)測(cè)試可以得到正確的結(jié)果為true。
7. 總結(jié)
現(xiàn)在,你已經(jīng)了解了浮點(diǎn)數(shù)在計(jì)算時(shí)可能出現(xiàn)的誤差。在Flash編程中,務(wù)必要注意這一點(diǎn),并盡量避免因此而引起的問(wèn)題。如果有可能,盡量使用整數(shù)進(jìn)行計(jì)算,以減少誤差的發(fā)生。