2 u013732444 u013732444 于 2014.02.21 21:36 提问

C怎样检测一个浮点数是否为另一个浮点数的倍数

判断一个浮点数数是否为0.5的倍数
#include
#include
int main(){
double a=0;
printf("请输入一个0.5的倍数:\n");
scanf("%f",&a);
a=a/0.5;
if(a==(int)a){
printf("您所输入的是0.5的倍数。\n");
exit(1);
}
printf("您所输入的不是0.5的倍数。\n");
}

无法检测,输入3.5,输出也是“您输入的不是0.5的倍数。”

1个回答

tlxzsz
tlxzsz   2014.02.22 10:33

int main(){
double a=0;
printf("请输入一个0.5的倍数:\n");
printf("%f\n",1e-6);
scanf("%lf",&a);//double类型的对应 %lf 输错了会错
printf("%lf\n",a);
int b = (int)(a/0.5);
printf("%d\n",b);
if(a-b*0.5<=1e-6&&a-b*0.5>=-1e-6)// 浮点型一般是有误差的,0.000001的误差内可以说是相等的。
{
printf("您所输入的是0.5的倍数。\n");
}
else
{
printf("您所输入的不是0.5的倍数。\n");
}
}

tlxzsz
tlxzsz 赶紧采纳。
4 年多之前 回复
u013732444
u013732444 嗯,谢谢啦。这样做更精确
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言如何判断浮点数的有效性
inf :infinity (linux)  等同于   #INF:infinity  (windows) nan :not a number     等同于      #IND:indeterminate (windows) 注意: 1、inf一般是因为得到的数值,超出浮点数的表示范围(溢出,即阶码部分超过其能表示的最大值);而nan一般是因为对浮点数进行了未定义的操作,如
判断一个浮点数是否等于零
判断一个数等于0一般情况下都会写成a==0;但是如果a的类型是浮点数,这样写不够好。一个数字在计算机中是以二进制的“0”“1”代码的形式存储的,计算机中对二进制位的存储是有限的。例如:1、十进制数0.625用二进制表示为0.101        (1)0.625*2=1.25------------1        (2)(1.25-1)*2=0.5--------0        (3)(0.5...
关于判断浮点数是否为0的细节
看到论坛上有人问“精确判断一个浮点数是否等于0,不要用if(data<1e-10)类似的做法。”。其实我们了解下计算机中是怎样存储浮点数的,这个问题的答案就很明了了。 IEEE754标准中,单精度浮点数(4byte)表示法:1bit符号位(S),8bit指数位(E,用阶码表示),23bit小数部分(尾数M)。双精度浮点数(8byte)表示法:1bit符号位,11bit指数位(用阶码表示),52bi
C语言判定是整数还是浮点数
在C中来判断输入的是浮点数是整数的DEMO。 通过表达式m-(int)m是否大于0来判断或者把输入作为字符串读入,然后检索字符串中是否有"."来判断 #include #define FIRST_DEMO //计算浮点数的位数 //#define SECOND_DEMO //#define THIRD_DEMO //把输入作为字符串读入
浮点数判断为0或者相等
浮点数不能像整形那样直接用 if(a==b) 这样来进行条件判断,因为浮点数用float或者double是不精确的表示。 float精确到小数点后6位 double精确到小数点后15位 所以,也就是说,如果一个float小于0.000001,我们就不知道是否为有效的了,也可以认为近似为0了。 同理一个double的有效范围为1e-15,小于1e-15的double类型我们就可以认为近似为0
【经典算法】:如何判断整数和浮点数是否相等
这个问题来自于我解决一个叫做五猴分桃的问题 其中会出现这么一些数据 我需要在右边第二栏数据里面找到整数型的数据,比如说 3121这类的数据但是我给第二栏定义的是float型的数据,如何判断这个float型的数据是不是整数呢?用了如下方法,注意看!!! int fun(float num){ int temp = (int)num; if(temp==num) return
怎么用c语言代码判断一个浮点数大于0
假设浮点数为a, 一般就用a>0判断就可以了 如果一定要求严谨的话, 你可以这么做: 判断a-0的绝对值是否大于1e-7, 也就是:if(fabs(a-0)>1e-7) 代码: #include #include #include void main() { float a; scanf("%f",&a); if(fabs(a-0)>1e-7) printf(">0"); els
shell实例浅谈之十检测整数、浮点数和日期数的合法性
一、问题       格式化输出大数字,使得输出结果更清晰地看出数字的数量级。默认用逗号(可用-d指定整数的分隔符)分隔整数部分,用点号(可用-t指定整数与小数的分隔符)分隔整数与小数部分。如1123456789.012输出为1,123,456,789.012。 二、详解 (1)算法 1123456789.012输出为1,123,456,789.012。 i、首先分开整数部
怎么判断一个数是整数还是浮点数
double modf(double x,double * ip) 把x分成整数和小数两部分,两部分正负与x相同,函数返回小数部分,整数部分保存在*ip中 函数名: modf 功 能: 把数分为整数和小数 (The modf function breaks down the floating-point value x into fractional and intege
js判断整数和正浮点数
js判断整数和正浮点数 //检查默认值是否为数字(整数和正浮点数) var reg = /^(0|[1-9]\d*|[1-9]\d*\.\d+|0\.\d*[1-9]\d*)$/; if(reg.test(str)){ alert("是数字"); }