BigDecimal 详解
浮点数的精度问题
float
和 double
类型的浮点数在计算时常常存在精度丢失的问题,主要原因是计算机使用二进制表示浮点数,而某些十进制小数无法精确地表示为二进制。例如,0.2 的二进制表示会是无限循环的,这使得在计算时无法精确表达这些小数,导致精度丢失。
浮点数精度丢失示例:
float a = 2.0f - 1.9f;
float b = 1.8f - 1.7f;
System.out.println(a); // 0.100000024
System.out.println(b); // 0.099999905
System.out.println(a == b); // false