gpt4 book ai didi

c# - 你能将浮点值精确地比较为零吗?

转载 作者:IT老高 更新时间:2023-10-28 20:26:05 26 4
gpt4 key购买 nike

我知道我们无法使用 == 比较 2 个浮点值。我们只能比较它们在彼此的某个区间内。我知道

if(val == 0.512)

由于浮点计算和转换为二进制和应该是

if (val in (0.512-epsilon, 0.512+epsilon))

但是 0 有什么特别之处吗?我们可以将 float 与 0 进行比较吗?甚至这是不正确的?尤其是在 C# 和 Java 的上下文中?

double val = 0;
val = getVal();
if(val == 0)

最佳答案

尽管 0 具有精确表示,但您不能依赖使用 float 的计算结果正好为 0。正如您所指出的,这是由于浮点计算和转换问题造成的。

因此,您应该根据容差 epsilon 测试 0。

关于c# - 你能将浮点值精确地比较为零吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2378628/

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