if浮点数c语言
A. 怎么用c语言代码判断一个浮点数大于0
假设浮点数为a,
一般就用a>0判断就可以了
如果一定要求严谨的话,
你可以这么做:
判断a-0的绝对值是否大于1e-7,
也就是:if(fabs(a-0)>1e-7)
代码:
#include<conio.h>
#include<stdio.h>
#include<math.h>
void main()
{
float a;
scanf("%f",&a);
if(fabs(a-0)>1e-7)
printf(">0");
else
printf("<=0");
getch();
}
B. C语言中为什么不能用 if(a==b)判断两个浮点数是否相等我知道 if (fabs(a-b)<1e-6)可以判断。求高人解答!
你查一下符点数存储标准IEEE754就知道了!
符点数是采用二进制科学计数法来进行存储的,因此,绝大多数的数在计算机中是不能 精确 表示的。
如果两个数a b都是常数赋值,这样比较,应该不会有问题,如:double a=5.3,b=5.3;
if ( a == b )
{
printf("a=b\n");
}
这时会输出a=b
如果a或b是经过运算后得到的值,这时就不一定是一个精确的你想要的值了,如:
double b=2.6+2.7,a=5.3;
if ( a == b )
{
printf("a=b\n");
}
这时就不一定能输出a=b了!
C. C语言 关于判断一个浮点数是否等于0
浮点数是近似值。 一般用精度判断
比如 判断是否为0 可以用
if(fabs(y)<1e-6)
这样就可以认为是为0 了。
直接==会不正确的。
D. c语言中%If的意思
%lf代表按双精度输入或输出。
格式占位符(%)是在C/C++语言中格式输入函数,如scanf、printf等函数中使用。其意义就是起到格式占位的意思,表示在该位置有输入或者输出。
(4)if浮点数c语言扩展阅读:
双精度浮点数(double)是计算机使用的一种数据类型,使用 64 位(8字节) 来存储一个浮点数。 它可以表示十进制的15或16位有效数字,其可以表示的数字的绝对值范围大约是:-1.7E-308~1.7E+308
单精度浮点数(float)与双精度浮点数(double)的区别如下:
1,在内存中占有的字节数不同
单精度浮点数在机内占4个字节
双精度浮点数在机内占8个字节
2,有效数字位数不同
单精度浮点数有效数字7位
双精度浮点数有效数字16位
3,所能表示数的范围不同
单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38
双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308
4,在程序中处理速度不同
一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快。
参考资料来源:网络-双精度浮点数
E. c语言程序中,float x与“零值”比较的if语句是(if==0)
浮点数等值比较使用下式:
#include
#include
fabs(a - b) < FLT_EPSILON
三个EPSILON:
FLT_EPSILON
DBL_EPSILON
LDBL_EPSILON
(5)if浮点数c语言扩展阅读:
无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。
假设浮点变量的名字为x,应当将 if (x == 0.0) // 隐含错误的比较
转化为 if ((x>=-EPSINON) && (x<=EPSINON))
其中EPSINON是允许的误差(即精度)。
F. 关于c语言,就想问下那个%if是什么意思
%lf:表示输入或者输出双精度浮点数。
双精度浮点数(double)是计算机使用的一种数据类型,使用 64 位(8字节) 来存储一个浮点数。 它可以表示十进制的15或16位有效数字,其可以表示的数字的绝对值范围大约是:-1.79E+308 ~ +1.79E+308
单精度浮点数是用来表示带有小数部分的实数,一般用于科学计算。占用4个字节(32位)存储空间,包括符号位1位,阶码8位,尾数23位。其数值范围为-3.4E38~3.4E38,单精度浮点数最多有7位十进制有效数字,单精度浮点数的指数用“E”或“e”表示。
(6)if浮点数c语言扩展阅读
单精度浮点数(float)与双精度浮点数(double)的区别如下:
1、在内存中占有的字节数不同
单精度浮点数在机内占4个字节。双精度浮点数在机内占8个字节
2、有效数字位数不同
单精度浮点数有效数字7位,双精度浮点数有效数字16位
3、所能表示数的范围不同
单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38。双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308
G. c语言中如何完整的判断输入的字符串是浮点数(代码)
如果字符串已放在 char 数组 str[] 里,例如
char str[]="123.34.34";
double d;
if ( sscanf(str,"%lf",&d) != 1 ) printf("wrong floating data\n");
H. C语言中浮点数如何比较大小
浮点数比较大小,由于精度问题,所以直接比较有时可能会出错。
所以在比较的时候需要用一个很小的数值来进行比较。当二者差小于这个很小的数时,就认为二者是相等的了。这个很小的数,称为精度。
精度由计算过程中需求而定。比如一个常用的精度为1e-6.也就是0.000001.
所以对于两个浮点数a,b
如果fabs(a-b)<=1e-6,那么就是相等了。
fabs是求浮点数绝对值的函数。
类似的
判断大于的时候,就是if(a>b
&&
fabs(a-b)>1e-6)。
判断小于的时候,就是if(a
1e-6)。
I. C语言环境中,6. 判断两个浮点型变量x和y是否相等一般用:if( <1e-6 )… 。
浮点数不可能完全相等,因为寄存器的长度是有限制的,32bit和64bit,32位只能保留1位符号位,8位阶,23位尾数。64位为1位符号位,11位阶,52位尾数。所以浮点数不是精确的数(同理,double也是),一般来说,对于float x和float y,如果这两个浮点数相等,就是abs(x-y) < 0.000001这样判断一般是没有什么问题的。