BCD编码问题

  • 浮点数运算存在精度问题

    二进制无法准确表示大部分小数,运算结果精度有问题

  • BCD编码

    使用二进制编码表示十进制数字,可以提高十进制运算精度

  • 不知道BCD编码如何提高计算精度的?

阅读 3.8k
3 个回答

说白了就是把浮点数的整数和小数部位分别做二进制编码,算之前先升阶成整数,算完后再降阶成小数,然后剩下的就是二进制计算了……

比如 93.14,用 BCD 码表示就是 1001 0011.0001 0100。要是去掉小数点的话是不是就相当于一个整数了?

浮点数直接计算会有精度问题(比如 IEEE-754 里著名的 0.1 + 0.2 != 0.3),BCD 实际相当于把浮点数全都转换成整数也就是定点数了,这样算起来就没精度问题了。

但 BCD 码只能表示小数点后有限位,还是不能精确表示 1/3 这样的无限小数。所以通常用于会计计算,因为钱这东西的单位不可能是无限小数,一定位数后确保精度就可以了。

BCD编码(一般指8421BCD码形式)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数。
如果是小数的话。 我们再运算前 会将这个数字升级 10的N次方 进阶到整数 再去运算,然后降级

BCD 可以用有限的位数精确表示任何一个有限位的十进制小数。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题