《程序是怎样跑起来的》——第三章:计算机进行小数运算时出错的原因

我们都知道,二进制转化成十进制的方法:
将各数位数值和位权相乘

十进制转二进制的方法:
《程序是怎样跑起来的》——第三章:计算机进行小数运算时出错的原因
十进制小数部分转二进制的方法:
《程序是怎样跑起来的》——第三章:计算机进行小数运算时出错的原因
而有些十进制的小数无法转化成二进制数:
如十进制0.1 转化成 二进制:0.000111001100(1100)循环
就像无法用10进制表示1/3一样
这就是小数运算出错的根本原因

浮点数

浮点数的表示形式:± m * n^e
± : 符号位
m ; 尾数
n :基数 (对计算机来说基数就是2)
e:指数

《程序是怎样跑起来的》——第三章:计算机进行小数运算时出错的原因

避免出错的方法

1.回避策略:无视这些错位。对大多数情况来说,微小的误差完全可以忽略掉。

2.把小数换成正数来计算。把小数扩大N倍编程整数,再把结果除以相应参数

二进制数和十六进制数

符号表示:
二进制 B
十六进制 0x
八进制 0
十进制 D(不写也可以,因为是默认十进制)

我们都知道,二进制转十六进制是4位取1
也就是说,通过十六进制数,二进制的位数能缩短至原来的1/4