有没有c语言大佬解释一下?
2个回答
展开全部
b) not equal
解释:由于浮点数在计算机内部采用的是二进制存储,因此 0.1 这个十进制值,实际上可能会被储存成一个无法被精确表示的 IEEE 754 二进制值,从而导致比较时不相等。这是因为,0.1 的十进制值在二进制表示中是一个无限循环小数,而计算机中浮点数的存储方式是按照规定的位数来进行存储的,因此存在精度误差。所以,尽管 f1 的声明中赋初值为 0.1,但是在比较时,由于浮点数的精度误差,f1 和 0.1 可能并不相等。因此,输出的结果是 "not equal"。
float f1 = 0.1;
float eps = 0.000001;
if(fabs(f1 - 0.1) < eps) {
printf("equal\n");
} else {
printf("not equal\n");
}
解释:由于浮点数在计算机内部采用的是二进制存储,因此 0.1 这个十进制值,实际上可能会被储存成一个无法被精确表示的 IEEE 754 二进制值,从而导致比较时不相等。这是因为,0.1 的十进制值在二进制表示中是一个无限循环小数,而计算机中浮点数的存储方式是按照规定的位数来进行存储的,因此存在精度误差。所以,尽管 f1 的声明中赋初值为 0.1,但是在比较时,由于浮点数的精度误差,f1 和 0.1 可能并不相等。因此,输出的结果是 "not equal"。
float f1 = 0.1;
float eps = 0.000001;
if(fabs(f1 - 0.1) < eps) {
printf("equal\n");
} else {
printf("not equal\n");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询