c语言小数除法

在C语言中利用3/2结果是1
用3.0/2或者3/2.0或者3.0/2.0结果都是1.5
但是不可能随时都是可以除的尽,例如说4.0/3,
怎么样才可以让用户输入的答案与计算机的答案一样
而且,让计算机认为你的回答正确
例如:4.0/3,并
if(i==4.0/3)
printf("回答正确!");
用户输入的i是1.33时计算机需要认可,并打印出:回答正确,的样式!
我做了很多次,依然是不对,
这该怎么做?
后来我采用过浮点数,例如说是4.0/3,计算机的计算结果很大1.333333333你设置多少个小数位它就给你多少个小数三,我们的课程设计是需要保留两位,例如这个题,当我输入1.33时,计算机的if(i==4.0/3)要相等,也就是说我输入的1.33=计算机计算结果1.3333333的循环,计算机要认可!怎么做呢?

第1个回答  推荐于2016-10-30
改为if(i>4.0/3-0.01&&i<4.0/3+0.01);

#include "stdio.h"
main()
{
float i;
scanf("%d",&i);
if(i>4.0/3-0.01&&i<4.0/3+0.01);
printf("zheng que") ;
getch( );
}本回答被提问者采纳
第2个回答  2008-09-11
很简单了,调整一下if语句的判断条件就OK了
如果只是这么精确到小数点后两位这么简单的判断的话
用float就绰绰有余了
非用double的话,float改为double就可以了
编译器:VC++ 6.0
--------------------------
#include <stdio.h>

int main(int argc,char * argv[])
{
float i=(float)1.33,
j;
float k;

j= (float)4.0/3;
k= (j>i)?j-i:i-j;
if(k<0.005)
{
printf("%s","»Ø´ðÕýÈ·");
}

return 0;
}
第3个回答  2008-09-11
可以这样i=4.0/3,如果你想保留两位小数的话,可以i=i*100,int a=i;这样a就是i的整数部分了,然后再if(h==a*1.0/100)判断就可以了。举个例子:i=4.0/3,i=1.33333333...,i=i*100后,i=133.333333...
int a=i;a=133,然后a*1.0/100=1.33,这样就可以了.
第4个回答  2008-09-11
浮点型数值的相等判断一般不直接比较,而是比较它们的差的绝对值是否小于一个给定的足够小的数(这个数根据实际需要的精度选择),
所以可以改为:
float f = i - 4.0/3;
if(f > -0.01 && f < 0.01) printf("回答正确!");
第5个回答  2008-09-11
数据类型要浮点型
相似回答