gpt4 book ai didi

c# - 小数精度

转载 作者:太空宇宙 更新时间:2023-11-03 20:12:00 26 4
gpt4 key购买 nike

我使用小数类型进行高精度计算(货币)。

但我今天遇到了这个简单的除法:

1/(1/37) 结果又是 37

http://www.wolframalpha.com/input/?i=1%2F+%281%2F37%29

但是 C# 给我:37.000000000000000000000000037M

这两个我都试过了:1m/(1m/37m);Decimal.Divide(1, Decimal.Divide(1, 37))

但两者都产生相同的结果。如何解释这种行为?

最佳答案

Decimal 将值存储为精度有限的十进制 float 。 1/37 的结果并未精确存储,因为它存储为 0.027027027027027027027027027M。真正的数字有 027 组,以十进制表示无限期。因此,您无法获得每个可能数字的十进制表示形式的精确数字。

如果在同一个计算中使用Double,在这种情况下最终结果是正确的(但这并不意味着它总是更好)。

关于该主题的一个很好的答案在这里:Difference between decimal, float and double in .NET?

关于c# - 小数精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19441258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com