Java判斷兩個浮點數(shù)相等
結(jié)論
一旦有浮點型數(shù)據(jù)參與運算的結(jié)果,一定不要使用 “ == ” 與其比較。
提出問題
我們知道在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)); } }
解決辦法 -- 通常情況
使用做差法比較結(jié)果是否小于一個極小的數(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 的結(jié)果與比較的數(shù) 2.3 進行做差, 如果差值小于極小值就是相等。 if( (a / b) - 2.3 < c) { System.out.println( "a / b 的結(jié)果 與 2.3 相等" ); } } }
到此這篇關(guān)于Java判斷兩個浮點數(shù)相等的文章就介紹到這了,更多相關(guān)Java 浮點數(shù)相等內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用Netty+SpringBoot實現(xiàn)定時后端向前端推送數(shù)據(jù)
這篇文章主要介紹了BIO、NIO、AIO三種Java?IO模型,并探討了如何使用Spring?Boot集成Netty實現(xiàn)后臺向前端推送信息的功能,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-01-01Java實現(xiàn)批量向mysql寫入數(shù)據(jù)的方法
這篇文章主要介紹了Java實現(xiàn)批量向mysql寫入數(shù)據(jù)的方法,涉及java基于JDBC連接mysql數(shù)據(jù)庫及寫入數(shù)據(jù)的相關(guān)操作技巧,非常簡單實用,需要的朋友可以參考下2017-12-12解決Spring Boot 多模塊注入訪問不到j(luò)ar包中的Bean問題
這篇文章主要介紹了解決Spring Boot 多模塊注入訪問不到j(luò)ar包中的Bean問題。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09使用WebMvcConfigurer配置SpringMVC過程
WebMvcConfigurer配置類用于Java代碼配置SpringMvc,實現(xiàn)該接口或繼承WebMvcConfigurationSupport類,常用方法:addInterceptors(攔截器)、addViewControllers(視圖控制器)等2024-12-12Java中documentHelper解析xml獲取想要的數(shù)據(jù)
本文主要介紹了Java中documentHelper解析xml獲取想要的數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2023-02-02Java實現(xiàn)發(fā)送HTML內(nèi)容并帶附件的電子郵件
這篇文章主要為大家詳細介紹了如何使用Java實現(xiàn)發(fā)送HTML內(nèi)容并帶附件的電子郵件,文中的示例代碼講解詳細,有需要的小伙伴可以參考一下2025-01-01