好久以前写过一个小库,自以为还挺好用的。核心也就是先转整数,运算完成再转小数,当然转的方法不是像@mcfog兄反对的那样直接乘以100,要不还是会出现问题的,而是先转字符串去掉小数点。
用法如下:
//使用数字的literal表示,创建一个Decimal对象
var d1 = new Decimal(3.68);
//调用该对象的四则运算方法,得到一个新的Decimal对象
var res=d1.add(2.25);
//调用该对象的valueOf方法,得到数值
alert( res.valueOf() ); //显示 5.93
//或者调用该对象的toString方法,得到数值的字符串表示
alert( res.toString() ); //显示 5.93
//可用的运算方法对应四则运算的+、-、×、÷
var d1 = new Decimal(3.68);
var res=d1.add(2.25);
assertEquals("3.68+2.25", "5.93", res.toString());
var d1 = new Decimal(3.68);
var res=d1.minus(2.25);
assertEquals("3.68-2.25", "1.43", res.toString());
var d1 = new Decimal(2.22);
var res=d1.multiply(3.33);
assertEquals("2.22*3.33", 7.3926, res.valueOf());
var d1 = new Decimal(6.66);
var res=d1.divide(2.22);
assertEquals("6.66/2.22", 3, res.valueOf());