gpt4 book ai didi

c# - 为什么第一次调用值为 11.5 的 Round(Double) 方法返回 11 而不是 12?

转载 作者:行者123 更新时间:2023-11-30 18:50:35 25 4
gpt4 key购买 nike

根据在 http://msdn.microsoft.com/en-us/library/wyk4d9cy.aspx 找到的 MSDN 文章浮点值 .1 没有有限的二进制表示,第一次调用值为 11.5 的 Round(Double) 方法返回 11 而不是 12。不太明白,为什么会这样?

最佳答案

第一个调用不是真的使用 11.5。它使用的值略小于 11.5,因为重复添加 0.1 会累积错误。如果您使用我的 DoubleConverter.ToExactString,这是输出显示传入的确切值:

11.0999999999999996447286321199499070644378662109375 --> 11
11.199999999999999289457264239899814128875732421875 --> 11
11.2999999999999989341858963598497211933135986328125 --> 11
11.39999999999999857891452847979962825775146484375 --> 11
11.4999999999999982236431605997495353221893310546875 --> 11
11.599999999999997868371792719699442386627197265625 --> 12

11.5 --> 12

在这一点上,所有的结果都是有意义的。

关于c# - 为什么第一次调用值为 11.5 的 Round(Double) 方法返回 11 而不是 12?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8851204/

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