C++ if 语句读数小于 等于

c++ if statements reading less than as an equal to

提问人:1001Jush 提问时间:12/13/2022 最后编辑:CPP_is_no_STANDARD1001Jush 更新时间:12/13/2022 访问量:49

问:

所以 TR[i] 是一个数组,在代码的开头设置为 4。每个 verable 都是一个浮点数。

float = RA;
int i;
float TR[4] = { 4, 4, 4, 4 };

RA = 0.75f;
TR[i] = TR[i] - (RA + 0.25f);
// when you output TR[i] it is 3
if (TR[i] < 3)
{
    TR[i] = TR[i] - 0.25f;
}

cout << TR[i];

输出应该是 3,但它说它是 2.5

我的问题是程序仍在运行 if 语句,而它不应该这样做,因为 3 < 3 不正确?很想知道出了什么问题?

C++ IF 语句 比较

评论

0赞 1001Jush 12/13/2022
这只是我代码的一小部分,如果您需要有关代码的更多信息,请告诉我,我将分享更多。我的代码中的 RA 实际上是计算出来的,但为了简单起见,我只给出了数字。
1赞 printf 12/13/2022
的价值是什么?您声明但从不为其赋值,至少在您显示的代码段中没有。iint i
0赞 1001Jush 12/14/2022
@printf所以我从 0 开始,当程序运行并且用户想要再次运行它时,就会发生 i++
0赞 chrslg 12/14/2022
请为将来的用户澄清一下,并编辑您的问题以在某处添加初始化。或者,更好的是,让它成为一个最小的可重现示例(您已经完成了构建 MRE 工作中最困难的部分)i=0
0赞 chrslg 12/14/2022
我无法重现错误。此外,除非编译器错误(我们都知道 99.99% 的“编译器错误”是我们代码中我们没有看到的错误),否则我看不出它会在哪个 cirumstances 下以 2.5 结束。我会理解 2.75。这将是一个经典的案例,“不要指望用浮点数进行精确计算”(0.25、0.75、1、3、4 都是 FP32 中的精确值:1×2⁻²、3×2⁻²、1×2⁰、3×2⁰、1×2²)

答: 暂无答案