DO WHILE有两个双重型变量

时间:2015-10-22 19:07:34

标签: c

我想制作X和N类型为double的简单程序,所以如果用户输入4.4的数字,那么do-while循环就会输出并打印bla bla。
如果用户输入的数字为5.6然后do-while需要返回并让用户输入一个小于n的数字.5是否可以使用double类型创建条件?

#include <stdio.h>

int main(){
double x=0.0,n=0.0;

    do{
         printf("Enter n(so it's less than n.5):");
         scanf("%lf",&n);
         x = n - (int)n;

     }while(n<=0.0 && x>=0.5);

     printf("Integer part is %d\nDecimal is %.3lf\n",(int)n,x);
     return 0;
}

4 个答案:

答案 0 :(得分:3)

是的,这绝对可能。但是,您编写的条件永远不会成为真实

while(n<=0.0 && x>=0.5)

你能告诉我一个小于或等于零大于或等于0.5的数字吗?没有这样的事情。

您的案例中的无效数字是小于或等于零的数字,数字大于或等于0.5,因此您需要将&&更改为||

答案 1 :(得分:2)

  

是否可以使用double类型创建条件?

是。肯定是。

关系运算符<=>=可以正常使用浮点类型。

将它们用于整数类型和浮点类型之间的一个主要区别是,您必须处理浮点表示的不精确性质。请参阅Floating point comparison作为比较浮点数时必须处理的问题的起点。

答案 2 :(得分:1)

我认为你的意思是

while(n<=0 || n>5)

答案 3 :(得分:0)

问题将发生在n<=0.0,它仅适用于nagative或零double值以及x>=0.5正数。此代码可以帮助您解决此问题。

#include <stdio.h>
#include <math.h>

int main(){
double x=0.0,n=0.0;

    do{
         printf("Enter n(so it's less than n.5):");
         scanf("%lf",&n);
         x = n - (int)n;

     }while(fabs(x)>=0.5);

     printf("Integer part is %d\nDecimal is %.3lf\n",(int)n,x);
     return 0;
}