0 0

关于JS中数字相加出现的问题。5

今天在无意中发现这个问题。

如:Number(4.2)+Number(9.2)
这两个值相加alert出来等于13.399999999999998,为什么?

如:Number(2.2)+Number(9.7)
alert出来等于11.899999999999998

但是 像这样的 Number(2.3)+Number(9.9)
alert出来等于12.2 。 这个值是我想要的。

为什么有的数值加起来会出现那么多的小数位呢,有的加起来又没有呢???
2011年9月07日 15:44

7个答案 按时间排序 按投票排序

0 0

采纳的答案

<html>
	<head></head>
	<body>
		<script>
		    
			var a=4.2;
			var b=9.2;

			alert(Number((a+b).toFixed(2)));
		</script>
	</body>
</html>

为正确结果

2011年9月07日 16:19
0 0

lz这是JavaScript浮点运算的一个bug,js自身的问题,不用想太多了。
比如:7*0.8 JavaScript算出来就是:5.6000000000000005 .

用Number()或者 toFixed自己处理一下,看你自己爱好了。

2011年9月09日 13:25
0 0

.......想知道内部原因。xiangxuehai_jiaer你回答个解决干嘛。知道出现问题,解决很容易的啊。

2011年9月07日 16:32
0 0

先将结果相加,然后用toFixed(2)精确两位小数,再转成Number类型。

2011年9月07日 16:24
0 0

<script type="text/javascript"> 
var a=Number(2.3)+Number(9.9) ;
var b=Math.round(a*10)/10;
alert(b);
</script>

2011年9月07日 16:16
0 0

很奇怪。

alert(Number(4.2)+Number(9.0));

13.2

alert(Number(4.2)+Number(9.1));

13.3

alert(Number(4.2)+Number(9.2));

13.39999999998

alert(Number(4.2)+Number(9.3));

13.5

alert(Number(4.2)+Number(9.4));

13.6000000001

2011年9月07日 16:08
0 0

参考IEEE 754 的浮点数标准,
简要的原理:数在计算机是没法连续表示的,离散分布,毕竟浮点数是无穷的。
所以有可能13.2没有,就用13.199999近似表示(这只是比喻)

2011年9月07日 16:06

相关推荐

    javascript中的数字与字符串相加实例分析

    javascript中的数字与字符串相加实例分析,学习js的朋友可以参考下。

    解决JavaScript数字精度丢失问题的方法

    JS 数字精度丢失的一些典型问题 JS 数字精度丢失的原因 解决方案(一个对象+一个函数) 一、JS数字精度丢失的一些典型问题 1. 两个简单的浮点数相加 0.1 + 0.2 != 0.3 // true 这真不是 Firebug 的问题,可以用...

    js实现连个数字相加而不是拼接的方法

    实现e1 的值 与 e2 相加 代码如下: var e1= document.getElementById(‘textbox1’).value; var e2 = document.getElementById(“textbox2”).value; document.getElementById(‘textbox4’).value = parseInt(e1)+...

    JS实现的进制转换,浮点数相加,数字判断操作示例

    主要介绍了JS实现的进制转换,浮点数相加,数字判断操作,结合实例形式分析了JavaScript数值运算、判断相关操作技巧,需要的朋友可以参考下

    js判断是否有6个连续数字的字符串的正则

    js 字符串转换成数字的三种方法js字符串转换成数字与数字转换成字符串的实现方法js实现在字符串中提取数字JavaScript数字和字符串转换示例javaScript 判断字符串是否为数字的简单方法javascript中的数字与字符串相加...

    js计算字符串长度

    js计算字符串长度,可以输入中文、英文、数字、中英文数字混合等,最后计算结果为字符串所占字节个数

    array-sum:将数字数组中的所有数字相加。 当存在非数字时也有效

    将数字数组中的所有数字相加。 当存在非数字时也有效。 安装 使用安装: npm i array-sum --save-dev 用法 var arraySum = require ( 'array-sum' ) ; arraySum ( [ 1 , 2 , 3 , 4 , 5 ] ) ; //=&gt; 15 arraySum ( ...

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

    关于JavaScript小数进行加、减、乘、除出现多位小数问题,自己研究了一下,而且作了相关的测试,收获不少知识点,需要的朋友可以参考下

    js验证表单大全

    4:js只能输入数字,判断数字、验证数字、检测数字、判断是否为数字、只能输入数字 5:只能输入英文字符和数字 6: js email验证 、js 判断email 、信箱/邮箱格式验证 7:js字符过滤,屏蔽关键字 8:js密码验证、判断...

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

    主要介绍了javascript解决小数的加减乘除精度丢失的方案的相关资料以及JavaScript中关于丢失数字精度的问题的探讨,非常的详细,需要的朋友可以参考下

    javascript字符串拆分成单个字符相加和不超过10,求最终值第1/2页

    首先把你的生日列出来 比如 1987 12 25 然后一位位的相加 1+9+8+7+1+2+2+5=35 把得出的数字再拆分 再加 3+5=8 得出的数字8 就是最后的结果,如果超过10的话就在拆分再加 1 肾脏 2 眼睛 3 才华天赋 4 良性基因 5 ...

    超级大整数相加.zip

    如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算。

    problems:在 JavaScript 中解决的编程问题

    问题 在 JavaScript 中解决的编程问题数组字符串链表返回循环链表循环开始处的节点检查链表是否是普通的检查链表是循环还是有循环查找单向链表的第 k 个最后一个元素修改一个链表,使得所有小于 x 的节点出现在所有...

    js 字符串转化成数字的代码

    方法主要有三种 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方法,这两个...

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

    但是你知道吗,同样的问题放在编程语言中,或许就不是想象中那么简单的事儿了。不信?我们先来看一段 JS。 var numA = 0.1; var numB = 0.2; alert&#40; (numA + numB&#41; === 0.3 ); 执行结果是 false。没错,当...

    JavaScript实现从数组中选出和等于固定值的n个数

    现实生活中的问题,可能会抽象为这样一种数据模型: 从一个数组中挑选出几个数,让这几个数相加的和为指定的值。 大多数读者应该有过网购的经历,网购一般会有个凑单功能,假如读者买了70元的商品,但是必须满100元...

    jsFloatMath:JavaScript库,用于数学运算,包括十进制数字

    jsFloatMath JavaScript库,用于数学运算,包括十进制数字有两种方法, 1&gt; addFloat(array)传递要在数组中相加的数字2&gt;乘法Float(array)传递要在数组中相乘的数字建立新物件var floatJs = require('decimal-...

Global site tag (gtag.js) - Google Analytics