分数オブジェクト
Written 10/18/02
Modified 10/27/02
fraction.js(ファイルに保存してください)
このスクリプトは、分数オブジェクトを与えます。
基本的に速度重視でエラーチェックなどしないので注意してください。
ただし、JScript5以上ではゼロ割りすると例外を投げます。
//コンストラクタ
Fraction();
Fraction(a);
Fraction(a, b);
コンストラクタは引数の数に応じて3種類用意してあります。
デフォルトは0。
引数が1つならそれは整数を意味します。
すなわち分母が1で分子がその引数になります。
引数が2つなら第1引数が分子、第2引数が分母になります。
//プロパティ
this.a; //分子
this.b; //分母
分母・分子は必ず約分されている建前です。
//メソッド
this.copy; //コピー
this.assign; //代入
this.equal; //等しい
this.notequal; //等しくない
this.less; //より小さい
this.lessequal; //より小さいまたは等しい
this.greater; //より大きい
this.greaterequal; //より大きいまたは等しい
this.add; //加算
this.subtract; //減算
this.multiple; //乗算
this.divide; //除算
this.addZ; //整数の加算
this.subtractZ; //整数の減算
this.multipleZ; //整数の乗算
this.divideZ; //整数の除算
this.add_asn; //加算代入
this.subtract_asn; //減算代入
this.multiple_asn; //乗算代入
this.divide_asn; //除算代入
this.addZ_asn; //整数の加算代入
this.subtractZ_asn; //整数の減算代入
this.multipleZ_asn; //整数の乗算代入
this.divideZ_asn; //整数の除算代入
this.toString; //文字列に
copy メソッドは同じ値のオブジェクトを作って返します。
var a = new Fraction(1, 2);
var b = a.copy();
b = a だとアドレスがコピーされて結局同じオブジェクトを参照することになります。
assign メソッドはオブジェクトに値を代入します。。
var a = new Fraction(1, 2);
var b = new Fraction(1, 3);
b.assign(a);
上で b を a と同じ値にしています。
b は Fractionオブジェクトでなければなりません。
equal メソッド以下はその名の通りです。
true または false を返します。
var a = new Fraction(1, 2);
var b = new Fraction(1, 3);
if(a.equal(b))
alert(a);
add メソッド以下はその名の通りですが、
速度重視といいつつこれも新しいオブジェクトを返します。
var a = new Fraction(1, 2);
var b = new Fraction(1, 3);
var c = a.add(b);
addZ メソッド以下は引数に整数を取ります。
ホントはいっしょにしてどんなオブジェクトかで分岐すればよいのですが、
速度重視のため余分にメソッドを用意しています。
var a = new Fraction(1, 2);
var b = a.addZ(1);
add_asn メソッド以下は複合代入を表します。
a += 1 という感じです。
新しくオブジェクトは作らず、a が更新されるのみです。
これだとかなり速いです。でも速度を追求しないときはあまり使わない方がいいかも。
asn は assign の略です。
var a = new Fraction(1, 2);
var b = new Fraction(1, 3);
a.add(b);
addZ_asn メソッド以下は整数の複合代入です。
var a = new Fraction(1, 2);
a.addZ(1);