浮动和双倍的货币价值

时间:2010-12-04 17:10:10

标签: java floating-point double currency

我已经在Java System.out.print(1-.6)打印.4中试验了float和double类型的错误,并且在System.out.print的情况下结果有点出乎意料(0.30000000000000004)( 1-0.7)。如果有人能够引导我找到解释为什么会发生这种情况的资源,那将会很有帮助。我假设它不是Java特定的,这些类型的内在错误。

谢谢!

2 个答案:

答案 0 :(得分:3)

Java中的真实类型是IEEE754 single and double precision floating point notation的实现。这些是实数的近似值而不是精确的表示。一些像0.8这样的实数无法准确表示。

答案 1 :(得分:1)

正如文森特所说,floatdouble类型无法存储不会表示为2 ^ -n值之和的值( n 大小取决于实现)。

改为使用BigDecimal课程。