`

js加减乘除丢失精度问题解决方法

阅读更多

 

/** 
	 * 加法运算,避免数据相加小数点后产生多位数和计算精度损失。 
	 * 
	 * @param num1加数1 | num2加数2 
	 */
	function numAdd(num1, num2) {
		var baseNum, baseNum1, baseNum2;
		try {
			baseNum1 = num1.toString().split(".")[1].length;
		} catch (e) {
			baseNum1 = 0;
		}
		try {
			baseNum2 = num2.toString().split(".")[1].length;
		} catch (e) {
			baseNum2 = 0;
		}
		baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
		return (num1 * baseNum + num2 * baseNum) / baseNum;
	};

 

/** 
	 * 加法运算,避免数据相加小数点后产生多位数和计算精度损失。 
	 * 
	 * @param num1加数1 | num2加数2 
	 */
	function numAdd(num1, num2) {
		var baseNum, baseNum1, baseNum2;
		try {
			baseNum1 = num1.toString().split(".")[1].length;
		} catch (e) {
			baseNum1 = 0;
		}
		try {
			baseNum2 = num2.toString().split(".")[1].length;
		} catch (e) {
			baseNum2 = 0;
		}
		baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
		return (num1 * baseNum + num2 * baseNum) / baseNum;
	};

 

/** 
	 * 乘法运算,避免数据相乘小数点后产生多位数和计算精度损失。 
	 * 
	 * @param num1被乘数 | num2乘数 
	 */
	function numMulti(num1, num2) {
		var baseNum = 0;
		try {
			baseNum += num1.toString().split(".")[1].length;
		} catch (e) {
		}
		try {
			baseNum += num2.toString().split(".")[1].length;
		} catch (e) {
		}
		return Number(num1.toString().replace(".", ""))
				* Number(num2.toString().replace(".", ""))
				/ Math.pow(10, baseNum);
	};

 

/** 
	 * 除法运算,避免数据相除小数点后产生多位数和计算精度损失。 
	 * 
	 * @param num1被除数 | num2除数 
	 */
	function numDiv(num1, num2) {
		var baseNum1 = 0, baseNum2 = 0;
		var baseNum3, baseNum4;
		try {
			baseNum1 = num1.toString().split(".")[1].length;
		} catch (e) {
			baseNum1 = 0;
		}
		try {
			baseNum2 = num2.toString().split(".")[1].length;
		} catch (e) {
			baseNum2 = 0;
		}
		with (Math) {
			baseNum3 = Number(num1.toString().replace(".", ""));
			baseNum4 = Number(num2.toString().replace(".", ""));
			return (baseNum3 / baseNum4) * pow(10, baseNum2 - baseNum1);
		}
	};

 

 

 

分享到:
评论

相关推荐

    javascript解决小数的加减乘除精度丢失的方案

    基于上述原因,以下是介绍如何解决在JavaScript中处理小数加减乘除时精度丢失问题的四种方法: 1. 乘法(accMul)函数:此函数通过计算两个数的小数部分的位数,然后相乘后除以10的幂次方来调整结果,以此来解决...

    javascript解决小数的加减乘除精度丢失的方案.docx

    ### JavaScript 解决小数加减乘除精度丢失的方案 #### 一、引言 在JavaScript中处理小数运算时,经常会遇到一个令人头疼的问题——精度丢失。这主要是因为JavaScript中的数字采用IEEE 754标准下的双精度64位浮点数...

    js Math.js bigNumber可以解决js运算精度丢失问题

    使用示例: math.config({ number:'BigNumber' }) let result=math.parser().eval(a+ "-" + b); //a,b是需要计算的值,中间是运算符

    详解js加减乘除精确计算

    JavaScript中的加减乘除运算在处理浮点数时可能会出现精度丢失的问题,这是由于计算机内部存储和计算浮点数的方式导致的。浮点数在计算机内存中是以二进制表示的,某些十进制小数转换成二进制时无法精确表示,从而...

    javascript加减乘除的简单实例.docx

    此外,为了方便使用,文档还扩展了 `String` 类型,添加了 `div` 和 `mul` 方法,使得可以直接对字符串形式的数字调用这些自定义的加减乘除操作,比如 `var result = "12.34".div("5.67")`。 总结来说,这个实例...

    javascrpt的加减乘除运算

    ### JavaScript中的精确加减乘除运算 在JavaScript中进行数学计算时,经常会出现精度丢失的问题,尤其是在处理小数运算时尤为明显。这是因为JavaScript中的数字是以双精度浮点数(64位)形式存储的,遵循IEEE 754...

    javascript加减乘除的简洁实例_.docx

    在JavaScript中,进行基本的数学运算如加、减、乘、除是相当直观的,但当我们处理浮点数时,可能会遇到精度问题。这个文档提供了一些简洁的实例,通过自定义函数来解决浮点数计算时可能出现的精度丢失问题。 首先,...

    javascript小数精度丢失的完美解决方法

    以上方法的共同原理是在进行小数运算前,先确定涉及数值的小数位数,然后根据最大或最小的小数位数来对数值进行放大或缩小,以保证在进行加减乘除运算时,所有的计算都是基于整数进行的,避免了直接对小数进行运算而...

    javascript加减乘除的简单实例

    总结一下,JavaScript中的加减乘除运算可能由于浮点数的表示方式而存在精度问题。为了克服这个问题,可以编写自定义函数,如`accDiv`、`accMul`、`accAdd`和`accSubtr`,它们通过计算小数位数并使用`Math.pow()`来...

    java和js的计算精度的实现

    其实在我们使用正常的 + - * / 运算时,在某些情况下就会出现精度丢失的问题,如金额过大时,单纯的加减都有可能出现精度丢失,对于银行项目来说,是很敏感的,需要对每个加减乘除都进行一次方法处理,为此我整理...

    js精确的加减乘除实例

    在JavaScript中,进行浮点数的加减乘除运算时,由于计算机内部的二进制表示方式,常常会出现精度问题,导致计算结果与预期不符。为了解决这个问题,我们可以采用自定义函数的方式来实现精确的计算。以下是一个详细的...

    JS浮点数字操作插件floatOPS.js

    在JavaScript编程中,...总结起来,floatOPS.js是一个专注于解决JavaScript中浮点数运算精度问题的插件,通过提供加减乘除四个方法,确保了在进行浮点数运算时的精度,对于需要精确计算的场景具有很高的实用价值。

    JS长整型精度问题实例分析

    如果不想引入新的库,也可以编写自定义函数来处理大整数的加减乘除等运算。 3. **服务器端处理**:尽可能地将数值计算和处理工作交给后端,避免在前端进行可能引起精度损失的操作。例如,可以将角色ID作为字符串...

    BigInteger, JS插件脚本

    BigInteger库正是为了解决这个问题,它提供了在JavaScript中操作大整数的能力,支持加减乘除、比较、模运算等多种数学运算。 BigInteger库通常用于需要处理超出JavaScript原生数据类型限制的场景,比如加密算法、...

    js_bigdecimal_1_0_1.zip

    1. **大数加减乘除**:支持两个大数之间的加法、减法、乘法和除法操作,确保结果的精度不受影响。 2. **比较操作**:可以比较两个大数的大小,支持等于、小于、大于等关系判断。 3. **格式化输出**:提供格式化数字...

    test_JS-数字精确计算_

    由于JavaScript内部使用IEEE 754标准存储和处理浮点数,这可能导致精度损失,尤其是在进行加减乘除等数学运算时。标题"test_JS-数字精确计算_"暗示我们将讨论如何在JavaScript中实现对小范围数字的精确计算。 描述...

    bignumber.js-master.zip

    《深入理解JavaScript中的大数运算库bignumber.js》 在JavaScript中,处理大数(超过Number.MAX...无论是简单的加减乘除,还是复杂的数学运算,bignumber.js都能游刃有余,是金融、科学计算等领域开发者不可或缺的库。

Global site tag (gtag.js) - Google Analytics