`
baggio1024
  • 浏览: 64429 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类

js 中的小数计算误差问题

 
阅读更多

在js中,带小数的数据相加或相乘时总会出现好多位小数.这是因为在js中浮点数的计算是以2进制算的,

解决方法一般是将小数化成整数后再作除法。

加法和减法示例:

function addValue(value1,value2){
	if(value1=="")value1="0";
	if(value2=="")value2="0";
	var temp1=0;
	var temp2=0;
	if(value1.indexOf(".")!=-1)
	 temp1=value1.length - value1.indexOf(".")-1;
	if(value2.indexOf(".")!=-1)
	 temp2=value2.length - value2.indexOf(".")-1; 
	
	var temp=0;
	
	if(temp1>temp2)
	temp = (parseFloat(value1)+parseFloat(value2)).toFixed(temp1);
	else
	temp = (parseFloat(value1)+parseFloat(value2)).toFixed(temp2); 
	
	return temp;
  
}

function subValue(value1,value2){
 	if(value1 == "") value1="0";
	if(value2 == "") value2="0";
	var temp1 = 0;
	var temp2 = 0;
	if(value1.indexOf(".") != -1)
	 temp1 = value1.length - value1.indexOf(".")-1;
	if(value2.indexOf(".") != -1)
	 temp2 = value2.length - value2.indexOf(".")-1; 
	
	var temp=0;
	
	if(temp1 > temp2)
	temp = (parseFloat(value1) - parseFloat(value2)).toFixed(temp1);
	else
	  temp = (parseFloat(value1)- parseFloat(value2)).toFixed(temp2); 
	
	return temp;
	
}

 

分享到:
评论
1 楼 lishen 2014-06-20  
感谢,搜到很多文章,就你这篇是对的

相关推荐

    js计算精度问题解决方案

    在JavaScript编程语言中,计算精度问题是一个...如果压缩包中的"js-float-accuracy-master"库提供了实用的解决方案,那么它可能包含了一些优化的算法或工具,以帮助开发者更好地处理JavaScript中的浮点数计算精度问题。

    JavaScript小数点精确计算

    3. **使用BigInt类型**:BigInt是JavaScript ES2019引入的一种新数据类型,用于处理大整数,但它不适用于小数计算。 4. **使用库**:对于更复杂的数学运算,可以使用一些专门处理精确计算的库,比如题目中提到的...

    解决JS浮点数(小数)计算加减乘除的BUG

    在JavaScript中,浮点数(小数)的计算可能会出现一些看似奇怪的结果,这主要是由于计算机内部表示浮点数的方式导致的。这个问题是许多开发者在编写JavaScript代码时可能遇到的一个常见陷阱。本文将深入探讨这个问题...

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

    在javascript中,当你使用小数进行加减乘除运算时,你会发现,所得到的结果有时后面带有长长的一段小数,使运算变得复杂,并且影响计算结果。上网查询了一下原因,大致如下:在javascript中,带小数的数据运算时总会...

    js保留小数位数

    JavaScript使用IEEE 754标准的64位浮点格式来表示数值,这种格式可以很好地处理大多数数值运算,但仍然存在一些精度损失的问题,尤其是在进行加减法时尤为明显。 ### 三、实现保留小数位数的函数 为了更灵活地控制...

    js计算小数的通用方法

    在JavaScript中进行数学运算时,尤其是在处理小数运算时,由于JavaScript内部采用的是浮点数表示法(基于IEEE 754标准),这可能会导致计算结果出现精度误差。例如,`0.1 + 0.2` 的结果并不等于 `0.3`,这是因为二...

    javascript避免数字计算精度误差的方法详解.docx

    在JavaScript中进行浮点数运算时,经常会出现精度误差的问题。例如,一个简单的加法运算 `0.1 + 0.2` 的结果并不是预期中的 `0.3`,而是 `0.30000000000000004`。这种现象不仅让人困惑,而且在实际应用中可能会导致...

    JS小数运算出现多为小数问题的解决方法

    在进行JavaScript小数运算时,我们经常会遇到由于浮点数表示的限制而导致的精度问题。由于浮点数在计算机内部是以二进制形式表示的,部分十进制小数无法转换成一个精确的二进制小数,这导致了在运算过程中出现误差。...

    JS绝对屏蔽计算误差

    JS绝对屏蔽计算误差的一个算法,方法是直接顺子思路写的,所以略显臃肿,但却对可以屏蔽,网上其他的一些用10的N次幂来解决一样有失效的,因为小数在乘以10N次幂的时候已经出现误差了,后续所有操作都失效。...

    js 对小数加法精度处理示例说明

    在JavaScript中,由于其数值类型(`Number`)的实现方式,小数加法时常会出现精度问题。这是因为在计算机内部,浮点数是以二进制形式存储的,而某些十进制小数无法精确地转换为二进制,导致计算过程中出现误差。这种...

    js小数运算出现多位小数如何解决

    总之,解决JavaScript小数运算误差的关键在于理解浮点数表示的局限性,并采取适当的策略来保持或恢复精度。`toFixed`、转换为整数以及自定义运算函数都是可行的方法,但需根据具体需求和性能考虑来选择合适的方式。...

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

    在JavaScript开发中,处理小数加减乘除运算时经常会遇到精度丢失的问题。由于JavaScript中的数字是以IEEE 754标准的双精度64位浮点数来表示的,这就意味着它可以精确地表示的整数范围大约在-***到***之间。当超出这...

    解决javascript中的浮点数计算不精确问题

    在JavaScript编程中,浮点数计算不精确是一个常见的问题,源于其内部的二进制浮点数表示方式。本文将深入探讨这个问题,并提供解决方案。首先,我们要理解为什么会出现这种不精确性。 JavaScript遵循IEEE 754标准来...

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

    这就是所谓的JavaScript小数精度丢失问题。 针对这一问题,文章提出了几种解决方法,包括乘法、加法、减法运算中对精度进行控制的函数。 在进行乘法运算时,可以通过累加两个乘数的小数位数来重新计算乘积,并最终...

    JS获取控件小数

    根据给定文件的信息,我们可以总结出以下关于JavaScript(简称JS)获取控件中小数操作的知识点。 ### JS获取控件小数操作 在Web开发中,处理表单数据时经常需要进行数值运算,并且通常需要对结果进行四舍五入或者...

    Javascript浮点数乘积运算出现多位小数的解决方法

    Javascript是一种广泛使用的脚本语言,在网页编程中占据核心地位。...不过,开发者在实际开发中应当意识到计算机的这种表示和运算误差,根据实际的应用场景,选取合理的处理方式以达到最好的结果。

    js小数计算小数点后显示多位小数的实现方法

    JavaScript中的小数计算时常会遇到精度问题,这是因为JavaScript在内部使用了IEEE 754标准来存储和处理浮点数,这可能导致某些特定的小数计算结果出现不精确的情况。例如,在示例中,22.77加上10的结果不是预期的...

    javascript 小数乘法结果错误的处理方法

    JavaScript中的小数乘法有时会出现看似不正确的结果,这是因为JavaScript使用了双精度浮点数(IEEE 754标准)来存储和计算数值。在处理小数时,由于内部的二进制表示方式,可能会导致微小的精度损失,尤其是在进行...

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

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

    javascript避免数字计算精度误差的方法详解

    标题所提到的知识点是关于在JavaScript编程语言中,如何处理和避免在进行数字计算时出现的精度误差问题。这个问题是数字在以浮点数形式存储时,因为计算机的存储架构是以二进制为基础的,导致一些十进制小数在二进制...

Global site tag (gtag.js) - Google Analytics