gpt4 book ai didi

c# - 哪些值不能用 double 正确表示

转载 作者:太空狗 更新时间:2023-10-29 21:13:41 25 4
gpt4 key购买 nike

Double 数据类型无法正确表示某些以 10 为基数的值。这是因为 float 表示实数的方式。这意味着在表示货币值时,应该使用十进制值类型以防止错误。 (请随时更正此序言中的错误)

我想知道的是,在标准 .Net 框架(C#,如果有所不同)中,在 64 位体系结构下的 Double 数据类型下出现此类问题的值是什么?

我希望答案是找到此类值的公式或规则,但我也想要一些示例值。

最佳答案

任何不能写成2的正负次幂之和的数,都不能精确表示为二进制 float 。

常见的IEEE formats for float 的 32 位和 64 位表示法施加了进一步的限制;它们限制有效数字和指数中的二进制数字的数量。因此,存在最大和最小可表示数字(如果有内存,大约为 +/- 10^308(以 10 为底))并且限制了可以表示的数字的精度。这个精度限制意味着,对于 64 位数字,数字中 2 的最大次方和最小次方的指数之间的差异限制为 52,因此如果您的数字包含 2^52 中的一项,它可以' 也包括 2^-1 中的项。

无法用二进制 float 精确表示的数字的简单示例包括1/32/31/5.

由于 float 集(在任何表示中)是有限的,而实数集是无限的,找到一个不能精确表示为 float 的实数的一种算法是选择一个随机实数。实数可以精确表示为 float 的概率为 0

关于c# - 哪些值不能用 double 正确表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12165216/

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