【问题标题】:How to fix error in money representation by Double?如何修复 Double 货币表示中的错误?
【发布时间】:2011-06-27 09:12:40
【问题描述】:

我使用 double 类型来表示货币值。 如您所知,某些数字表示不正确,例如 19,7949999999.... 近似为 19,80。

我该如何解决这个问题? 我尝试改用 Decimal,但问题仍然存在。

谢谢。

【问题讨论】:

  • 十进制不应该有同样的问题。你在做什么样的计算? (也许我误解了:你说 19.794999 近似于 19.80 - 你想要 9 重复值?没有办法 double 会在 19.795 和 19.80 之间四舍五入 - 它们相距太远, double 有足够的精度来区分那些.)
  • 十进制是最好的货币值,显示代码在你处理它时似乎有问题
  • 您能否使用decimal 显示一些仍然显示这些问题的代码? decimal 中为尾数留出的空间量非常惊人。
  • 既然我们有了答案,我们能不能有问题!

标签: c# .net double decimal currency


【解决方案1】:

确实,使用需要使用System.Decimal

【讨论】:

    【解决方案2】:

    您应该使用System.Decimal,它可以准确地表示以 10 为底的数字。

    如果您已经尝试使用 Decimal,请确保您永远不要仍然使用 double,因为这可能会导致错误不会消失。如果你只使用Decimal,你应该没有任何问题。

    【讨论】:

      猜你喜欢
      • 2012-12-11
      • 1970-01-01
      • 2011-04-13
      • 1970-01-01
      • 2015-08-10
      • 2012-02-22
      • 1970-01-01
      • 2013-06-11
      相关资源
      最近更新 更多