比较C中的双精度值
为什么即使输入值999999,它也总是转到else语句?有人能解释一下为什么,正确的方法是什么吗比较C中的双精度值,c,visual-studio-6,C,Visual Studio 6,为什么即使输入值999999,它也总是转到else语句?有人能解释一下为什么,正确的方法是什么吗 #include <stdio.h> int main(int argc, char **args) { double dValue = 0; scanf("%d",&dValue); if(10000 < dValue){ printf("More than"); } else { printf
#include <stdio.h>
int main(int argc, char **args)
{
double dValue = 0;
scanf("%d",&dValue);
if(10000 < dValue){
printf("More than");
} else {
printf("Less than");
}
return 0;
}
#包括
int main(int argc,char**args)
{
双D值=0;
scanf(“%d”和&d值);
如果(10000
如果要以整数形式读入值(使用%d”
),则应将其声明为int
。如果您打算将该值读入为double
,则应改为使用%lf
作为scanf格式说明符。在scanf
调用中尝试%f
或%g
。%d
%lf
,打开编译器警告。%d
并不意味着double
。这意味着十进制转换为int
@wallyk,谢谢。已更改为%lf,效果良好。但是我打印了dValue的值,它仍然打印99999的值。为什么我在if语句中尝试比较它时,它仍然是错误的,即将999999与另一个int值进行比较?@Azuan:输入99999或999999,程序将打印“小于”?这就是你说的吗?改为%lf,效果很好。但是我打印了dValue的值,它仍然打印99999的值。在if语句中比较99999与另一个int值时,为什么它仍然是错误的?@Azuan您是如何尝试打印dValue
?我使用%d打印值,因为我使用%d扫描。假设我使用与上面相同的代码。然后我输入999999。为什么它仍然跳过if语句?10000<999999不应该是真的吗?@Azuan说得很清楚,你说你已经修复了这个bug,声明了dValue
为int
,使用%d”
和scanf
,输入一个大于10000的数字,你看到了的分支,如果执行了条件,那么实际上没有。我使用了与上面相同的代码,这意味着我还没有修复这个bug。然后我输入大于10000的数字,但它仍然转到'else'语句