JS浮点数相减出现异常数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

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


本文出自 “HTMLDOM” 博客,请务必保留此出处http://sucheng.blog.51cto.com/6511117/1844688

以上是关于JS浮点数相减出现异常数的主要内容,如果未能解决你的问题,请参考以下文章

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

浮点数运算——加减乘除都有哈

js浮点数运算出现误差解决方案

两大基本数据类型 - 整数类型 / 浮点数类型

JS 乘法运算出现了浮点,该怎么解决

浮点数运算和金额处理