In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

0.1+0.1+0.1.....

0.1を100足した結果は、10ではない。
これは、10進数で、1/3が0.333333.....と循環少数になる減少と同じで、
0.1を2進数で表現すると、循環小数となり、2進数で、0.1を表現することは、
できないのが理由だ?

このような誤差が問題となる場合、0.1を整数に変換後、処理し、
その後、少数に戻すという処理を行う必要があったり、、
Get Adobe Flash player
by alotfuck 26 Jun 2009
    Embed
/**
 * Copyright alotfuck ( http://wonderfl.net/user/alotfuck )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/vdLV
 */

package {
    import flash.display.Sprite;
    /**
    * 0.1を100足した結果は、10ではない。
    * これは、10進数で、1/3が0.333333.....と循環少数になる減少と同じで、
    * 0.1を2進数で表現すると、循環小数となり、2進数で、0.1を表現することは、
    * できないのが理由だ?
    *
    * このような誤差が問題となる場合、0.1を整数に変換後、処理し、
    * その後、少数に戻すという処理を行う必要があったり、、
    */
    public class FlashTest extends Sprite {
        public function FlashTest() {
            // write as3 code here..
            var value:Number=0.1;
            
            var count:Number=0;
            while(++count<100){
                value+=0.1;
            }
            new Text(10,10,"count > "+ count+" value > "+value , this);
            
            value=1/3;
            count=0;
            while(++count<100){
                value+=1/3;
            }
            
            new Text(10,30,"count > "+ count+" value > "+value , this);
            
            new Text(10,50,"---------------------------" , this);
            value=0.1;
            value*=10;
            count=0;
            while(++count<100){
                value+=0.1*10;
            }
            value/=10;
            
            new Text(10,70,"count > "+ count+" value > "+value , this);
            
        }
    }
}

import flash.text.*;
import flash.display.*;

class Text extends Sprite{
     public function Text(x:Number,y:Number,value:String,parent:Sprite){
         var txt:TextField=new TextField();
         txt.text=value;
         txt.x=x;
         txt.y=y;
         txt.width=500;
         parent.addChild(txt);
     }
}