【问题标题】:Float and Double for monetary valuesFloat 和 Double 用于货币价值
【发布时间】:2010-12-04 17:10:09
【问题描述】:

我在 Java System.out.print(1-.6) 打印 .4 中试验了 float 和 double 类型有什么问题,在 System.out.print( 1-.7)。如果有人能够将我引向一些解释为什么会发生的资源,那将会很有帮助。我假设它不是 Java 特定的,这些类型本身就有问题。

谢谢!

【问题讨论】:

标签: java floating-point double currency


【解决方案1】:

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

【讨论】:

【解决方案2】:

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

改用BigDecimal 类。

【讨论】:

  • 干杯,是的,我确实读过关于使用 BigDecimal 进行货币计算的帖子,只是对这些类型感到好奇。
猜你喜欢
  • 2011-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-01
相关资源
最近更新 更多