JS浮点数相减出现异常数

今天小编出现一种情况在js中用0.3-0.2得出来的却不是0.1而是0.09999999999999999999998,很是纳闷,查看了很多资料才发现原来是如下原因导致的:

"浮点数”不是“实数”,浮点数有最大表示范围,在表示范围内用最接近实数的浮点数可以表示数来表示,比如

0.1是实数,意味着0.10000000…… 都是0.1,而double无法精确表示0.1,但它能精确表示 +0.1000000000000000055511151231257827021181583404541015625 ,所以它用 +0.1000000000000000055511151231257827021181583404541015625 来表示 0.1,同样: 
0.1 <--> 0.1000000000000000055511151231257827021181583404541015625 
0.2 <--> 0.200000000000000011102230246251565404236316680908203125 
0.3 <--> 0.299999999999999988897769753748434595763683319091796875

当你用浮点数来计算时,结果也是浮点数.计算机无法精确表示的,于是它用最接近的值来表示

时间: 2024-11-09 05:04:46

JS浮点数相减出现异常数的相关文章

js 浮点数加减问题

/** ** 加法函数,用来得到精确的加法结果 ** 说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显.这个函数返回较为精确的加法结果. ** 调用:accAdd(arg1,arg2) ** 返回值:arg1加上arg2的精确结果 **/ function accAdd(arg1, arg2) { var r1, r2, m, c; try { r1 = arg1.toString().split(".")[1].length; } catch (e) {

js 日期相减得到天数

<script>var sDate="2007-12-25";var eDate="2008-01-02";var sArr = sDate.split("-");var eArr = eDate.split("-");var sRDate = new Date(sArr[0], sArr[1], sArr[2]);var eRDate = new Date(eArr[0], eArr[1], eArr[2]);

js 时间相减判断

例子: var date   = new Date(); var current_time  = date.getTime();           //当前时间 毫秒 var end_month = date.getMonth() + 1;   //当前月 var end_day = date.getDate();   //当前日 var end_time = Date.parse(end_month+'/'+end_day+'/'+date.getFullYear()+' '+'23:59:

js日期相减得到分钟数

const date1 = new Date(fieldsValue.examStartTime); const date2 = new Date(fieldsValue.examEndTime); const s1 = date1.getTime(); const s2 = date2.getTime(); const Minute2 = Number((s2 - s1) / 60000); const Minute1 = Number(fieldsValue.duration) 原文地址:h

javascript浮点数相减、相乘出现一长串小数

149.7 * 100 = 14969.999999999998 3.57 - 2.33 = 1.2399999999999998 原文地址:https://www.cnblogs.com/wujinhong/p/12667836.html

js浮点数精度问题

大多数语言在处理浮点数的时候都会遇到精度问题,但是在JS里似乎特别严重,来看一个例子 alert(45.6*13); 结果居然是592.800000000001,当然加法之类的也会有这个问题 那这是js的错误吗? 当然不是,你的电脑做着正确的二进制浮点运算,但问题是你输入的是十进制的数,电脑以二进制运算,这两者并不是总是转化那么好的,有时候会得到正确的结果,但有时候就不那么幸运了 alert(0.7+0.1);//输出0.7999999999999999 alert(0.6+0.2);//输出0

JS浮点数的加减乘除运算

文章来源地址:http://blog.csdn.net/lyd518/article/details/7236464 转载请注明出处,尊重作者劳动成果,谢谢!问题这样的: 37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两个只有一位小数的数字相乘,怎么可能多出这么小数点出来. 我Google了一下,发现原来这是JavaScript浮点运算的一个bug. 比

js浮点数算术出现多为小数

/****************************************解决JS浮点数(小数)计算加减乘除的BUG Start****************************************/ 问题:js浮点数运算问题---莫名出现多位小数 // 原因:这是由于在运算的时候先把浮点数转化成二进制后进行运算,// 但是有的小数在二进制编码后出现无限循环,// 因而导致计算出现了误差,在其它变成语言中也有类似的问题. /**** 加法函数,用来得到精确的加法结果** 说明:

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

/**  ** 加法函数,用来得到精确的加法结果  ** 说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显.这个函数返回较为精确的加法结果.  ** 调用:accAdd(arg1,arg2)  ** 返回值:arg1加上arg2的精确结果  **/ function accAdd(arg1, arg2) {     var r1, r2, m, c;     try {         r1 = arg1.toString().split(".")[1].