相关疑难解决方法(0)

为什么这些数字不相等?

以下代码显然是错误的.有什么问题?

i <- 0.1
i <- i + 0.05
i
## [1] 0.15
if(i==0.15) cat("i equals 0.15") else cat("i does not equal 0.15")
## i does not equal 0.15
Run Code Online (Sandbox Code Playgroud)

floating-point r floating-accuracy r-faq

263
推荐指数
4
解决办法
4万
查看次数

浮点比较

int main()
{
    float a = 0.7;
    float b = 0.5;
    if (a < 0.7)
    {
       if (b < 0.5) printf("2 are right");
       else         printf("1 is right");
    }
    else printf("0 are right");
}
Run Code Online (Sandbox Code Playgroud)

我本来期望这段代码的输出0 are right.但令我沮丧的是输出是什么1 is right原因?

c c++ floating-point

63
推荐指数
2
解决办法
1万
查看次数

10
推荐指数
2
解决办法
2859
查看次数

R中的浮点问题?

可能重复:
为什么这些数字不相等?

下面的表达式(评估为0.1)被认为大于0.1.

> round(1740/600,0) - 1740/600
[1] 0.1
> (round(1740/600,0) - 1740/600) <= 0.1
[1] FALSE //???!!???
> (round(1740/600,0) - 1740/600) <= 0.1000000000000000000000000000000000000001
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

认为问题可能是由于四舍五入,我尝试了同样的结果:

> 3 - 2.9
[1] 0.1
> (3 - 2.9) <=0.1
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

那么,给出了什么以及如何在不捏造截止值的情况下修复它?

floating-point r floating-accuracy

4
推荐指数
2
解决办法
1万
查看次数

标签 统计

floating-accuracy ×3

floating-point ×3

r ×3

c ×1

c++ ×1

r-faq ×1