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

如题所述

第1个回答  2022-12-11

由于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");

}

}

相似回答