BigDecimal为什么可以保证小数精度
问题描述:
如题,,BigDecimal用到BigInteger,BigInteger不是一样要转二进制吗? 求大神
答
Decimal的原理就是把小数放大10的N次方倍,将小数点移动到后面,这样利用都是整数,就保证了精度。
答
整数转换成二进制不会丢失精度。只有小数才可能会。因为不是所有的十进制小数都能表示成有限二进制小数。
如果你不能理解,想象下三进制和十进制的关系。
如果我们把一个三进制的数用十进制表示,是不是如果这个三进制的数没有小数部分,肯定可以用十进制精确表示?
比如
0 - 0
1 - 1
2 - 2
10 - 3
11 - 4
12 - 5
20 - 6
21 - 7
22 - 8
100 - 9
...
是不是都能表示?
但是小数就不行了,比如三进制的0.1,就是十进制的0.33333.....
如果想明白了,那么你的问题也不难理解了。