小数在JS中表示怎么不准确

JS用64位来进行数字的表示,但是对于小数的表示却力不从心,即使对于我们最熟悉的小数表示起来都比较困难,当然是计算机本来就存在的问题。

如 0.1 +0.2=0.30000000000000004(JS的计算结果)。

出现这种结果的原因在于计算机本质上只能是存储0和1的,对于整数来说,使用十进制转换为二进制的方法是“除2取余,逆序排列”,表示起来毫无压力。

但是对于小数用二进制来表示,方法是不同的——"乘2取整,顺序排列"。

举个“栗子”:

将0.45进行二进制表示,

0.45*2=0.9   取整为0

0.9*2=1.8     取整为1

0.8*2=1.6     取整为1

0.6*2=1.2     取整为1

0.2*2=0.4     取整为0

...直到小数部分为0,显然这里会无限循环下去。‘

所以一般会取前面的十几位二进制数尽量接近表示0.45。

由于这种计算的规则,从而对于不等于1/2^n(n>=1,n为整数)的小数,二进制是不能精确表示的。

对于像金融类行业需要精确数字的,一般是需要要分数的形式表示相应小数的。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,684评论 0 13
  • 网站乱码问题我们会经常碰到,大多见于非英文的中文字符或其他字符乱码,而且,这类问题常常是因为编码方式问题,主要原因...
    波段顶底阅读 3,389评论 1 9
  • 背景 在java中float赋值给double,会产生精度问题。 输出为2.0999999046325684。 小...
    我叫小小强阅读 19,596评论 2 23
  • 早上好#易效能 # 蒋小园 2017/09/18(305/500) 【不忘初心,坚持始终】 健康:作息《昨晚今早》...
    圆圆jXY阅读 278评论 0 0
  • 趁着这个假日,远离城市的喧嚣,在这无限接近自然的山寨村落...
    KKling阅读 255评论 0 1

友情链接更多精彩内容