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)文章
Java初級必看的數(shù)據(jù)類型與常量變量知識點
這篇文章主要給大家介紹了關(guān)于Java初級必看的數(shù)據(jù)類型與常量變量知識點的相關(guān)資料,需要的朋友可以參考下2023-11-11使用filebeat收集并解析springboot日志過程示例
這篇文章主要為大家介紹了使用filebeat收集并解析springboot日志實現(xiàn)過程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08eclipse springboot工程打war包方法及再Tomcat中運(yùn)行的方法
這篇文章主要介紹了eclipse springboot工程打war包方法及再Tomcat中運(yùn)行的方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08使用Runnable實現(xiàn)數(shù)據(jù)共享
這篇文章主要為大家詳細(xì)介紹了如何使用Runnable實現(xiàn)數(shù)據(jù)共享,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07Spring實現(xiàn)控制反轉(zhuǎn)和依賴注入的示例詳解
這篇文章主要為大家詳細(xì)介紹IoC(控制反轉(zhuǎn))和DI(依賴注入)的概念,以及如何在Spring框架中實現(xiàn)它們,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-08-08Java實現(xiàn)的不同圖片居中剪裁生成同一尺寸縮略圖功能示例
這篇文章主要介紹了Java實現(xiàn)的不同圖片居中剪裁生成同一尺寸縮略圖功能,涉及java針對圖片的讀取、屬性修改等相關(guān)操作技巧,需要的朋友可以參考下2017-09-09springboot~nexus項目打包要注意的地方示例代碼詳解
這篇文章主要介紹了springboot~nexus項目打包要注意的地方,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07