-
浮点数运算存在精度问题
二进制无法准确表示大部分小数,运算结果精度有问题
-
BCD编码
使用二进制编码表示十进制数字,可以提高十进制运算精度
不知道BCD编码如何提高计算精度的?
二进制无法准确表示大部分小数,运算结果精度有问题
使用二进制编码表示十进制数字,可以提高十进制运算精度
BCD编码(一般指8421BCD码形式)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数。
如果是小数的话。 我们再运算前 会将这个数字升级 10的N次方 进阶到整数 再去运算,然后降级
15 回答8.2k 阅读
8 回答6k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.8k 阅读
1 回答2.2k 阅读✓ 已解决
说白了就是把浮点数的整数和小数部位分别做二进制编码,算之前先升阶成整数,算完后再降阶成小数,然后剩下的就是二进制计算了……
比如 93.14,用 BCD 码表示就是
1001 0011.0001 0100
。要是去掉小数点的话是不是就相当于一个整数了?浮点数直接计算会有精度问题(比如 IEEE-754 里著名的
0.1 + 0.2 != 0.3
),BCD 实际相当于把浮点数全都转换成整数也就是定点数了,这样算起来就没精度问题了。但 BCD 码只能表示小数点后有限位,还是不能精确表示 1/3 这样的无限小数。所以通常用于会计计算,因为钱这东西的单位不可能是无限小数,一定位数后确保精度就可以了。