我使用double类型来表示货币值。 正如你所知,一些数字没有被正确表示,如19,7949999999 ....大概是19,80。如何通过Double修复货币表示中的错误?
我该如何解决这个问题? 我试图使用十进制代替,但我仍然有问题。
谢谢。
我使用double类型来表示货币值。 正如你所知,一些数字没有被正确表示,如19,7949999999 ....大概是19,80。如何通过Double修复货币表示中的错误?
我该如何解决这个问题? 我试图使用十进制代替,但我仍然有问题。
谢谢。
确实,使用需要使用System.Decimal
。
你应该使用System.Decimal
,它是精确地代表基数为10的数字。
如果您已经尝试使用Decimal
,请确保您永远不会使用double,因为这可能会导致错误消失。如果您只使用Decimal
,则不应该有任何问题。
你不应该有与十进制相同的问题。你在做什么样的计算? (也许我误解了:你说19.794999大概是19.80--你想要九倍的重复值吗?双倍在19.795到19.80之间是不可能的 - 它们相距太远,双倍有足够的精度来区分那些) – Rup
十进制对于货币值是最好的,显示代码在处理方式上似乎出了点问题 – V4Vendetta
你可以使用'decimal'显示一些代码,它仍然显示这些问题吗?为“尾数”中的尾数留出的空间数量是相当不可思议的。 – sarnold