首页 > 其他 > 详细

计算机处理浮点数(小数)的精准度问题(前端&后端)

时间:2021-06-06 16:38:07      阅读:11      评论:0      收藏:0      [点我收藏+]

数据类型值在计算机底层,都是以二进制进行存储

例如:浏览器中数字是十进制的,但是存储在计算机底层就是二进制,存在把十进制转换为二进制

整数:除以2取余数,商为0结束

小数:乘以2,取整数部分,剩余继续乘2,直到整数部分位1,没有小数部分了(特殊:很多浮点数转化为二进制,结果都是无限循环的,但是计算机底层最多只能存储64位,超出的部分截掉 => 存储在计算机底层的浮点数对应的二进制值可能本身就是不准确的)

 

浏览器中的十进制,都是有长度限制的(一般是16-17位),所以0.1+0.2 计算机底层处理完的结果 0.30000000000000004

浏览器在截取时,把超出的部分截掉,截取后如果后面全是0,则省略掉,但凡有1位不是0,则不能省略(0.3截取后最后一位是4,所以要保留前面所有的0,但0.4截取后全是0,则可以省略0,保留0.4)

 

一般处理:

1. +(0.1+0.2).toFixed(2) 自动四舍五入后转换为数字

技术分享图片

 

 

 

2. 重写plus()

 

计算机处理浮点数(小数)的精准度问题(前端&后端)

原文:https://www.cnblogs.com/zhoujingye/p/14855221.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!