“==”运算符似乎不适用于浮点数
"==" operator seeems not to work for floating point numbers
有人可以解释这里的输出吗?
#include <stdio.h>
int main(void) {
float f = 0.1 ;
printf ("%f\n",f ) ;
if (f == 0.100000) {
printf ("true ") ;
}
else {
printf ("False") ;
}
return 0;
}
输出:
0.100000
False
0.100000
默认是double,试试0.100000f
。如果需要与 double 进行比较,则需要尝试 here.
中描述的内容
float 和 double 类型的对象以不同的精度存储。
你应该写
if (f == 0.100000f) {
正在尝试比较两个浮点数。
另外最好用一个float类型的常量来初始化变量f
float f = 0.1f;
您正在尝试将 float
数字与 double
进行比较。数字 0.100000
被视为 double
类型,除非您用尾随 f
指定它是 float.
因此:
int main(){
float x = 0.100000;
if (x == 0.100000)
printf("NO");
else if (x == 0.100000f)
// THE CODE GOES HERE
printf("YES");
else
printf("NO");
}
您可以参考 single precision and double precision 了解理论细节
有人可以解释这里的输出吗?
#include <stdio.h>
int main(void) {
float f = 0.1 ;
printf ("%f\n",f ) ;
if (f == 0.100000) {
printf ("true ") ;
}
else {
printf ("False") ;
}
return 0;
}
输出:
0.100000
False
0.100000
默认是double,试试0.100000f
。如果需要与 double 进行比较,则需要尝试 here.
float 和 double 类型的对象以不同的精度存储。
你应该写
if (f == 0.100000f) {
正在尝试比较两个浮点数。
另外最好用一个float类型的常量来初始化变量f
float f = 0.1f;
您正在尝试将 float
数字与 double
进行比较。数字 0.100000
被视为 double
类型,除非您用尾随 f
指定它是 float.
因此:
int main(){
float x = 0.100000;
if (x == 0.100000)
printf("NO");
else if (x == 0.100000f)
// THE CODE GOES HERE
printf("YES");
else
printf("NO");
}
您可以参考 single precision and double precision 了解理论细节