C/C++中如何判断一个double类型的变量为零
发布网友
发布时间:2022-04-25 08:45
我来回答
共3个回答
热心网友
时间:2023-11-10 04:31
请看这里面的定义
C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\float.h
float,double分别遵循R32-24,R64-53的标准,他们的位数分别是23,52;即误差在2^-23,2^-52;所以float的精度误差在1e-6;double精度误差在1e-15
所以要判断一个单精度浮点数:则是if( abs(f) <= 1e-6);
要判断一个双精度浮点数:则是if( abs(f) <= 1e-15 );
热心网友
时间:2023-11-10 04:31
浮点型不能直接比较是否等于0,需要设置相应的精度,在精度允许范围内都可以认为是0
代码:
#include<stdio.h>
#define jing 0.000001
int main(void)
{
double d = 0.00000001;
if(d - 0.0 < jing && d - 0.0 > -jing)
printf("d = 0");
return 0;
}
热心网友
时间:2023-11-10 04:32
double a;
if(a==0.0)//若为0则执行
{
}
热心网友
时间:2023-11-10 04:31
请看这里面的定义
C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\float.h
float,double分别遵循R32-24,R64-53的标准,他们的位数分别是23,52;即误差在2^-23,2^-52;所以float的精度误差在1e-6;double精度误差在1e-15
所以要判断一个单精度浮点数:则是if( abs(f) <= 1e-6);
要判断一个双精度浮点数:则是if( abs(f) <= 1e-15 );
热心网友
时间:2023-11-10 04:31
浮点型不能直接比较是否等于0,需要设置相应的精度,在精度允许范围内都可以认为是0
代码:
#include<stdio.h>
#define jing 0.000001
int main(void)
{
double d = 0.00000001;
if(d - 0.0 < jing && d - 0.0 > -jing)
printf("d = 0");
return 0;
}
热心网友
时间:2023-11-10 04:32
double a;
if(a==0.0)//若为0则执行
{
}
热心网友
时间:2023-11-10 04:31
请看这里面的定义
C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\float.h
float,double分别遵循R32-24,R64-53的标准,他们的位数分别是23,52;即误差在2^-23,2^-52;所以float的精度误差在1e-6;double精度误差在1e-15
所以要判断一个单精度浮点数:则是if( abs(f) <= 1e-6);
要判断一个双精度浮点数:则是if( abs(f) <= 1e-15 );
热心网友
时间:2023-11-10 04:31
浮点型不能直接比较是否等于0,需要设置相应的精度,在精度允许范围内都可以认为是0
代码:
#include<stdio.h>
#define jing 0.000001
int main(void)
{
double d = 0.00000001;
if(d - 0.0 < jing && d - 0.0 > -jing)
printf("d = 0");
return 0;
}
热心网友
时间:2023-11-10 04:32
double a;
if(a==0.0)//若为0则执行
{
}