- add(a, b) {// 相加
- var c, d, e;
- try {
- c = a.toString().split(".")[1].length;
- } catch (f) {
- c = 0;
- }
- try {
- d = b.toString().split(".")[1].length;
- } catch (f) {
- d = 0;
- }
- return e = Math.pow(10, Math.max(c, d)), (this.mul(a, e) + this.mul(b, e)) / e;
- },
- sub(a, b) {// 相减
- var c, d, e;
- try {
- c = a.toString().split(".")[1].length;
- } catch (f) {
- c = 0;
- }
- try {
- d = b.toString().split(".")[1].length;
- } catch (f) {
- d = 0;
- }
- return e = Math.pow(10, Math.max(c, d)), (this.mul(a, e) - this.mul(b, e)) / e;
- },
- mul(a, b) {// 主体
- var c = 0,
- d = a.toString(),
- e = b.toString();
- try {
- c += d.split(".")[1].length;
- } catch (f) { }
- try {
- c += e.split(".")[1].length;
- } catch (f) { }
- return Number(d.replace(".", "")) * Number(e.replace(".","")) / Math.pow(10, c);
- },
- div(a, b) {// 除
- var c, d, e = 0,
- f = 0;
- try {
- e = a.toString().split(".")[1].length;
- } catch (g) { }
- try {
- f = b.toString().split(".")[1].length;
- } catch (g) { }
- return c = Number(a.toString().replace(".", "")), d = Number(b.toString().replace(".","")), this.mul(c / d, Math.pow(10, f - e));
- }
js 在数字计算时, 因为 IEEE 754 会有精度丢失, 完善一下, 需要用到哪个, 只要 mul 和你用到的函数就 OK
来源: http://www.bubuko.com/infodetail-2641165.html