博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js小数运算的时候也可能会精度丢失,以下是解决方案
阅读量:5874 次
发布时间:2019-06-19

本文共 1171 字,大约阅读时间需要 3 分钟。

hot3.png

/** * @param a * @param b *  * 整体思路: * 	如果两个数有小数, 先把小数转换为整数, 再进行运算, 运算后再转为小数. 整数运算就不存在精度丢失了. */function numberSubtract(a, b){	if (a == null && b == null) return;	if (a == null) return b;	if (b == null) return a;		if(a != null && b != null){		let str_a = "", str_b = "";				let scale_a = 0, scale_b = 0;		let no_e_a = true, no_e_b = true;		let m = 0;				str_a = a.toString();//toString 是函数,而不是属性		str_b = b.toString();				if(str_a.indexOf(".") != -1){//js 没有 contains 函数, 可以使用 indexOf 来代替			try {				scale_a = str_a.split(".")[1].length;			} catch (e) {				no_e_a = false;			}		}else no_e_a = false;				if(str_b.indexOf(".") != -1){			try {				scale_b = str_b.split(".")[1].length;			} catch (e) {				no_e_b = false;			}		}else no_e_b = false;		if (no_e_a || no_e_b) {			if (scale_a > scale_b) {				m = scale_a;				for (var int = 0; int < scale_a - scale_b; int++) {					str_b += "0";				}			} else {				m = scale_b;				for (var int = 0; int < scale_b - scale_a; int++) {					str_a += "0";				}			}		}				//Math pow 取 10 的 m 次幂。		return (Number(str_a.replace(".", "")) - Number(str_b.replace(".", ""))) / Math.pow(10, m);	}}

 

转载于:https://my.oschina.net/wliming/blog/1517880

你可能感兴趣的文章
Flume案例Ganglia监控
查看>>
HDU 4001 To Miss Our Children Time DP
查看>>
12C 新特性--全库缓存
查看>>
中国科学院数学与系统科学研究院关于2019年招收硕士研究生复试规程
查看>>
在Github中创建项目并与本地关联
查看>>
Qt的quit(),exit()以及close()事件捕获
查看>>
1002. 写出这个数 (20)
查看>>
普通软件项目开发过程规范(五)—— 总结
查看>>
css 样式(checkbox开关、css按钮)
查看>>
PS打造油画般的风景人像
查看>>
JS_高程3.基本概念(2)
查看>>
Leetcode 俄罗斯套娃信封问题
查看>>
二维正则表达式v0.1
查看>>
面向空实现类继承
查看>>
Java中MVC详解以及优缺点总结
查看>>
5——PHP逻辑运算符&&唯一的三元运算符
查看>>
学习HTML5+CSS3的第一天
查看>>
只打开一个子窗体
查看>>
Linux下Makefile的automake生成全攻略
查看>>
顶级域名和二级域名共享cookie及相互删除cookie
查看>>