double类型与零值比较时不能用==和!=,但>=和<=可以吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了double类型与零值比较时不能用==和!=,但>=和<=可以吗?相关的知识,希望对你有一定的参考价值。

可以用>=和<=进行比较的。

浮点数(double)之所以不能用 == 和 != 是因为浮点数在内存中都是按精度来存储的,所以看到的 3.12也许本来是3.123456取的小数点后2位位精度,所以当与另一个 3.12进行比较时可能会出现很多种情况,如果另一个3.12其实是3.121111取的小数点后2位位精度的话,那么两个数看着相等,其实是不等的。

所以办在对浮点数进行比较的时候一般都是相减然后去和一个精度比较。

扩展资料:

C++中的浮点数有6种,分别是:

float:单精度,32位

unsigned float:单精度无符号,32位

double:双精度,64位

long double:高双精度,80位

然而不同的编译器对它们的支持也略有不同,据我所知,很多编译器都没有按照IEEE规定的标准80位支持后两种浮点数的,大多数编译器将它们视为double。

参考资料来源:百度百科-浮点数 (有理数)

参考技术A 可以用>=和<=进行比较的。
浮点数(double)之所以不能用 == 和 != 是因为浮点数在内存中都是按精度来存储的,所以你看到的 3.12也许本来是3.123456取的小数点后2位位精度,所以当与另一个 3.12进行比较时可能会出现很多种情况,如果另一个3.12其实是3.121111取的小数点后2位位精度的话,那么两个数你看着相等,其实是不等的。
所以你办在对浮点数进行比较的时候一般都是相减然后去和一个精度比较。
例如:
a=3.12; b=3.13;
当a和b比较时就应该:
#define N 0.0001
if(a-b<N)
就说明a小于b;.
而不是直接去比较 if( a<b)本回答被提问者和网友采纳
参考技术B 语法上说,都可以。
double x=0.0;
if (x == 0.0 ) printf("yes == zero\n");
if (x != 0.0 ) printf("x != zero\n");else printf("yes == zero\n");

if (x >= 0.0 ) printf("x >= zero\n");else printf("x < zero\n");
if (x <= 0.0 ) printf("x <= zero\n");else printf("x > zero\n");

---
比较两个double 是否相等,通常用
#include <math.h>
if (fabs(x - y) < eps) 则相等. eps 为允许误差,例如 1e-10
因为double 只有 32 位,有效数字 14 位10进制,含有截断误差。

c语言中double类型值的大小比较

参考技术A

由于double浮点数的精度问题,所以在比较大小的时候,不能像int整数型那样,直接if(a==b),if(a<b),if(a>b)。

要使用一个精度EPS:

const double EPS = 1e-6;  //一般这样子就够,但有时具体题目要考虑是否要更小的 ;

if(fabs(a-b) < EPS)  //判断是否相等 ;

if(a > b+EPS)   // 判断a是否大于b,因为大的肯定大,所以即使你小的加上,还是会更大 。

扩展资料

JAVA double类型比较大小

@org.junit.Test

public void Test()

BigDecimal big = new BigDecimal(1);

BigDecimal Graphicprice = new BigDecimal(0.01);//图文价格

BigDecimal Speechprice = new BigDecimal(0.02);//语音价格

BigDecimal Videoprice = new BigDecimal(1);//视频价格

System.out.println(Graphicprice + " " + Speechprice +" " + Videoprice);

if(Graphicprice.compareTo(big)<0 || Graphicprice.compareTo(big)==0 || 

Speechprice.compareTo(big)<0 || Speechprice.compareTo(big)==0 || 

Videoprice.compareTo(big)<0 || Videoprice.compareTo(big)==0)

System.out.println("ok");





以上是关于double类型与零值比较时不能用==和!=,但>=和<=可以吗?的主要内容,如果未能解决你的问题,请参考以下文章

变量的基本类型与零值-GOLANG

条件判断语句比较

bool, int, float与零的比较

double类型数值比较的坑

使用 epsilon 将双精度数与零进行比较

c语言中double类型值的大小比较