c语言中为什么不能用 if a b 判断两个浮点数是否相等

2021-03-11 08:31:12 字数 1429 阅读 9921

1楼:匿名用户

你查一bai下符点数存储

du标准ieee754就知道了!zhi

符点数是采用二进制科dao学计数法版

来进行存储的,因此,权绝大多数的数在计算机中是不能 精确 表示的。

如果两个数a b都是常数赋值,这样比较,应该不会有问题,如:double a=5.3,b=5.3;

if ( a == b )

这时会输出a=b

如果a或b是经过运算后得到的值,这时就不一定是一个精确的你想要的值了,如:

double b=2.6+2.7,a=5.3;

if ( a == b )

这时就不一定能输出a=b了!

2楼:匿名用户

可以判断的来 ,只不过浮点

源数精度过高,难以达到一致。bai

举个例子du

#include

int main()

这个程序并不输出0,而是7.45058e-009,所以zhi在进行算术

dao逻辑运算的时候,会丧失精度

****************************************=

你自己把我给你的程序拿去测试下就知道了

****************************************=

记得给分哦

****************************************=

3楼:我的

因为a ,b实数,而实数在计算机和存储时会有一些微小的误差,因此不能直接进行“if(a= =b)

判断。必须用if (fabs(a-b)<1e-6进行判断

4楼:匿名用户

因为浮点数都是有精度的,比如1.0000000000和1.000000是不一样的

c语言中,,,,,,if(fabs(a)<=1e-6)......所代表的含义

5楼:匿名用户

fabs(a)取a的绝对值,然后判断这个值是否小于等于0.000001

6楼:匿名用户

表示“如果a的绝对值小于等于10的-6次方”

7楼:邵伟伟将军

fabs(a)是对取a的绝对值,1e-6表示的是1*10的-6次方,它是浮点数,浮点数的小数只能精确到小数点的后六位,这个语句是判断a是否等于0的。

8楼:匿名用户

当浮点数a的绝对值小或等于 1*10^-6(0.000001).

9楼:匿名用户

如果a的绝对值小于10的负6次方......

10楼:匿名用户

1e-6表示的是浮点数。也就是1*10的-6次方。 给分

java中判断两个数组是否相等的方法是什么

1楼 slim丶风 还是用arrays equals吧 是比较地址 equals主要用来单个比较 下面是 arrays equals方法的源码public static boolean equals long a long a2 java中判断两个数组是否相等的方法 2楼 匿名用户 两个方法,第一个...