最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JavaScript教程之小数计算问题

来源:动视网 责编:小采 时间:2020-11-27 20:13:18
文档

JavaScript教程之小数计算问题

JavaScript教程之小数计算问题:先上图:什么情况?原因:js采用二进制进行小数计算先看十进制的小数转换为二进制的方法:十进制数的整数位是二进制数的整数位,十进制数的小数位是二进制数的小数位假如我们有小数111.4(10),我们对他进行一下计算:首先取小数位0.4,对其进行乘二取整法
推荐度:
导读JavaScript教程之小数计算问题:先上图:什么情况?原因:js采用二进制进行小数计算先看十进制的小数转换为二进制的方法:十进制数的整数位是二进制数的整数位,十进制数的小数位是二进制数的小数位假如我们有小数111.4(10),我们对他进行一下计算:首先取小数位0.4,对其进行乘二取整法
 先上图:

什么情况?

原因:js采用二进制进行小数计算

先看十进制的小数转换为二进制的方法:

十进制数的整数位是二进制数的整数位,十进制数的小数位是二进制数的小数位

假如我们有小数111.4(10),我们对他进行一下计算:

首先取小数位0.4,对其进行“乘二取整法”

0.4*2=0.8 取结果的的整数位置上的数是0 | 按

0.8*2=1.6 取1 | 顺

0.6*2=1.2 取1 | 序

0.2*2=0.4 取0 | 写

0.4*2=0.8 取0 | 出

0.8*2=1.6 取1 |

0.6*2=1.2 取1 |

0.2*2=0.4 取0 |

来到这了,我们发现出现了循环,因此可以推知小数点后的二进制是

0.01100110……(循环0110)

整数就不写了,方法是除2取余法

题目中2.6+2.6+2.6=7.800000000001,JavaScript中计算小数运算时,都会先将十进制的小数换算到对应的二进制,一部分小数并不能完整的换算为二进制,这里就出现了第一次的误差。待小数都换算为二进制后,再进行二进制间的运算,得到二进制结果。然后再将二进制结果换算为十进制,这里通常会出现第二次的误差。

解决方法:指定保留几位小数 (7.8).toFixed(2)=7.80;,这种方法有可能损失精度,网上还有自定义这种加法的方法

文档

JavaScript教程之小数计算问题

JavaScript教程之小数计算问题:先上图:什么情况?原因:js采用二进制进行小数计算先看十进制的小数转换为二进制的方法:十进制数的整数位是二进制数的整数位,十进制数的小数位是二进制数的小数位假如我们有小数111.4(10),我们对他进行一下计算:首先取小数位0.4,对其进行乘二取整法
推荐度:
标签: 教程 js 问题
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top