2011-06-27 20 views
-1

我使用double类型来表示货币值。 正如你所知,一些数字没有被正确表示,如19,7949999999 ....大概是19,80。如何通过Double修复货币表示中的错误?

我该如何解决这个问题? 我试图使用十进制代替,但我仍然有问题。

谢谢。

+4

你不应该有与十进制相同的问题。你在做什么样的计算? (也许我误解了:你说19.794999大概是19.80--你想要九倍的重复值吗?双倍在19.795到19.80之间是不可能的 - 它们相距太远,双倍有足够的精度来区分那些) – Rup

+1

十进制对于货币值是最好的,显示代码在处理方式上似乎出了点问题 – V4Vendetta

+2

你可以使用'decimal'显示一些代码,它仍然显示这些问题吗?为“尾数”中的尾数留出的空间数量是相当不可思议的。 – sarnold

回答

4

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

3

你应该使用System.Decimal,它是精确地代表基数为10的数字。

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