Java double類型比較大小詳解
Java double類型比較大小
一、問題描述
把從數據庫里查詢出來的數據,金額小于1的數據給過濾掉,數據庫里的數據有很多都是0.01,0.02,等。
二、解決方法
先把他們轉成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"); } }
輸出結果如下:
@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("第二位數大!"); } if (data1.compareTo(data2) == 0) { System.out.println("兩位數一樣大!"); } if (data1.compareTo(data2) > 0) { System.out.println("第一位數大!"); } }
關于兩個double類型數的大小判斷
大于小于是可以像整數那樣直接判斷的,但是不可以判斷兩個double是相等的。
因為
double類型的表示往往是不精確的(近似表示). 有精度范圍的那種. 如果是運算結果,即使都是0.0,也不保證相等!一般用一個容差e(很小的值)
那么a和b相等就可以表示為
if ( fabs(a-b) < e ) return true;
注意:double類型雖然可以通過>和<直接比較,但是大于等于,小于等于是不能直接>=和<=比較的。
錯誤比較方式:now >= mid*n
正確比較方式:now - mid * n > -0.000001
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
使用filebeat收集并解析springboot日志過程示例
這篇文章主要為大家介紹了使用filebeat收集并解析springboot日志實現(xiàn)過程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08eclipse springboot工程打war包方法及再Tomcat中運行的方法
這篇文章主要介紹了eclipse springboot工程打war包方法及再Tomcat中運行的方法,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08Java實現(xiàn)的不同圖片居中剪裁生成同一尺寸縮略圖功能示例
這篇文章主要介紹了Java實現(xiàn)的不同圖片居中剪裁生成同一尺寸縮略圖功能,涉及java針對圖片的讀取、屬性修改等相關操作技巧,需要的朋友可以參考下2017-09-09springboot~nexus項目打包要注意的地方示例代碼詳解
這篇文章主要介紹了springboot~nexus項目打包要注意的地方,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07