亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java double類型比較大小詳解

 更新時間:2021年12月13日 11:56:04   作者:碼農(nóng)致富  
這篇文章主要介紹了Java double類型比較大小,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Java double類型比較大小

一、問題描述

把從數(shù)據(jù)庫里查詢出來的數(shù)據(jù),金額小于1的數(shù)據(jù)給過濾掉,數(shù)據(jù)庫里的數(shù)據(jù)有很多都是0.01,0.02,等。

二、解決方法

先把他們轉(zhuǎn)成BigDecimal類型,然后在利用BigDecimal中的compareTo方法去比較大小,實現(xiàn)如下:

	@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");
		}
	}

輸出結(jié)果如下:

	@org.junit.Test
	public void Test(){ 
		BigDecimal data1 = new BigDecimal("1");
		BigDecimal data2 = new BigDecimal("0.01");
		if (data1.compareTo(data2) < 0) {
			System.out.println("第二位數(shù)大!");
		}
		if (data1.compareTo(data2) == 0) {
			System.out.println("兩位數(shù)一樣大!");
		}
		if (data1.compareTo(data2) > 0) {
			System.out.println("第一位數(shù)大!");
		} 
	}

關(guān)于兩個double類型數(shù)的大小判斷

大于小于是可以像整數(shù)那樣直接判斷的,但是不可以判斷兩個double是相等的。

因為

double類型的表示往往是不精確的(近似表示). 有精度范圍的那種. 如果是運(yùn)算結(jié)果,即使都是0.0,也不保證相等!一般用一個容差e(很小的值)

那么a和b相等就可以表示為

if ( fabs(a-b) < e )
return true;

注意:double類型雖然可以通過>和<直接比較,但是大于等于,小于等于是不能直接>=和<=比較的。

錯誤比較方式:now >= mid*n

正確比較方式:now - mid * n > -0.000001

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論