Java Effective 48 - 如果要求精确的答案,请避免使用float和double
float和double类型的主要设计目的是为了科学计算和工程计算。它们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。float和double类型对于货币计算尤为不合适.
static void floatTest(){ System.out.println(1.03-0.42); System.out.println(1-0.1*9); //Use BigDecimal, BigInteger, or long BigInteger bi; BigDecimal bd; // smaller than Int max, use it. or long if smaller than 10(18), else use BigDecimal }