Java判斷兩個浮點數(shù)相等
結論
一旦有浮點型數(shù)據(jù)參與運算的結果,一定不要使用 “ == ” 與其比較。
提出問題
我們知道在Java中浮點數(shù)float 和 double 的值不能很精準的表示一個小數(shù),因為會有精度損失。
下面來看一個例子:
public class FloatTest {
public static void main(String[] args){
double a = 6.9;
double b = 3.0;
System.out.println( a / b);
}
}
進行比較
public class FloatTest {
public static void main(String[] args){
double a = 6.9;
double b = 3.0;
System.out.println( a / b);
// 如果在比較時,使用 ==
System.out.println( 2.3 == (a / b));
}
}
解決辦法 -- 通常情況
使用做差法比較結果是否小于一個極小的數(shù)。如果小于規(guī)定的極小數(shù),我們就認為他們是相等的。
例子:
public class FloatTest {
public static void main(String[] args){
double a = 6.9;
double b = 3.0;
System.out.println( a / b);
// 在這里我們規(guī)定極小數(shù)為 0.000000001
double c = 0.1E-8;
// 將 a / b 的結果與比較的數(shù) 2.3 進行做差, 如果差值小于極小值就是相等。
if( (a / b) - 2.3 < c) {
System.out.println( "a / b 的結果 與 2.3 相等" );
}
}
}
到此這篇關于Java判斷兩個浮點數(shù)相等的文章就介紹到這了,更多相關Java 浮點數(shù)相等內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Spring?Boot?優(yōu)雅整合多數(shù)據(jù)源
這篇文章主要介紹了Spring?Boot?優(yōu)雅整合多數(shù)據(jù)源,多數(shù)據(jù)源就是在一個單一應用中涉及到了兩個及以上的數(shù)據(jù)庫,更多相關內(nèi)容需要的小伙伴可以參考下面文章介紹2022-05-05
深入理解JAVA中的聚集和組合的區(qū)別與聯(lián)系
下面小編就為大家?guī)硪黄钊肜斫釰AVA中的聚集和組合的區(qū)別與聯(lián)系。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考,一起跟隨小編過來看看吧2016-05-05
Springboot注入成員變量HttpServletRequest的原理分析
這篇文章主要介紹了Springboot注入成員變量HttpServletRequest的原理分析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05
查找native方法的本地實現(xiàn)函數(shù)native_function詳解
JDK開放給用戶的源碼中隨處可見Native方法,被Native關鍵字聲明的方法說明該方法不是以Java語言實現(xiàn)的,而是以本地語言實現(xiàn)的,Java可以直接拿來用。這里介紹下查找native方法的本地實現(xiàn)函數(shù)native_function,感興趣的朋友跟隨小編一起看看吧2021-12-12

