关于C语言中的float,下面哪种说法正确的是 ()
拜托题目上传者把选项写清楚,复制时正确替换HTML的特殊符号(即">"应改为大于号">"),“x^2”应该明确写成“x * x”或“x的二次方”或其他不会导致歧义的形式。
#include<cstdio>
#include<cmath> //fabs(),返回浮点数的绝对值
const double EPS = 1e-8; //1e-7
int main()
{
//代码输出 True: 9 == 0.9*10;
//若放宽精度至1e-7,则两个表达式都为真
if(fabs(0.9f - 0.9) < EPS) puts("True: 0.9f == 0.9");
if(fabs(9 - 0.9*10) < EPS) puts("True: 9 == 0.9*10");
return 0;
} 让我逐一分析每个选项:
A. x的二次方大于等于0,对于float变量x总成立
B. float变量加法满***换律
C. 条件0.9f == 0.9 的值为真
D. 条件9 == 0.9*10 的值为真
所以正确答案是 B。
需要注意的是,虽然浮点数运算存在精度问题,但基本的数学性质(如加法交换律)仍然保持。不过在实际编程中,我们不应该直接比较浮点数是否相等,而是应该使用一个很小的误差范围来进行比较。