numberToFraction
/**
* Copyright quentin ( http://wonderfl.net/user/quentin )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/mmm2
*/
package {
import flash.text.TextField;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public const PRIMES:Array=[2, 3, 5, 7];
public function FlashTest() {
log(.1, numberToFraction(.1));
log(.2, numberToFraction(.2));
log(.5, numberToFraction(.5));
log(-2.5, numberToFraction(-2.5));
log(4.2, numberToFraction(4.2));
log(14.2, numberToFraction(14.2));
log(4, numberToFraction(4));
log(0, '----------------------');
log(.1, numberToIntegerFraction(.1));
log(.2, numberToIntegerFraction(.2));
log(.5, numberToIntegerFraction(.5));
log(-2.5, numberToIntegerFraction(-2.5));
log(4.2, numberToIntegerFraction(4.2));
log(14.2, numberToIntegerFraction(14.2));
}
public var tf:TextField;
public function log(n:Number, s:String):void {
if (!tf) {
tf=new TextField();
tf.width=stage.stageWidth;
tf.height=stage.stageHeight;
addChild(tf);
}
tf.appendText(n+' =\t'+s+'\n');
}
public function numberToFraction(n:Number):String {
if (int(n)==n) return n.toString();
var top:int=n*100;
var bottom:int=100;
var didSomething:Boolean;
var i:int;
var v:int;
do {
didSomething=false;
for (i=0; i<PRIMES.length; i++) {
v=PRIMES[i];
if (top%v==0 && bottom%v==0) {
top/=v;
bottom/=v;
didSomething=true;
}
}
} while (didSomething);
return top+'/'+bottom;
}
public function numberToIntegerFraction(n:Number):String {
if (Math.abs(int(n))>0) {
var integer:int=int(n);
return integer+' '+numberToFraction(n-integer);
}
return numberToFraction(n);
}
}
}