【发布时间】:2014-05-30 05:08:59
【问题描述】:
我想使用 C# 以十进制货币 (EUR) 处理价格,而不用担心舍入错误,也不需要滚动我自己的十进制算术方法。 The C# reference for the decimal type 说
与浮点类型相比,十进制类型的精度更高,范围更小,适用于金融和货币计算。
什么?
我不在乎精确度,我只想要大约七个 sig-figs。但我想知道5.31 EUR 是一个精确值。 A,二进制编码的十进制类型将是理想的。所以我的问题是 C# decimal 是否是那种类型。
【问题讨论】:
-
不要纠结于“精度”之类的术语。
decimal专为金钱计算而设计;如果您使用其他任何东西,您将进入一个受伤的世界。 -
这根本无法回答问题。如果
decimal实际上在后台使用小数,那么它可以工作。但是我仔细看过的所有文档都避免这样说。 -
实现无关。了解它的工作原理是相关的,并进行了足够详细的描述:它可以很好地供您使用。
-
@TimS。实现很重要,因为它只有在内部表示为基数 10 时才可能起作用。在我看到 Jon 的回答之前,我在文档中找不到任何可以准确存储“0.1”的内容。
-
尽量让你的问题保持干净;每个人都可以在下面看到 Jon 的答案,他们也可以看到您接受了它作为正确的答案。他们还可以看到所有的 cmets。
标签: c# floating-point numbers decimal