java double、float型別的比較
在java中,針對double、float型別的運算和比較都最好不要直接進行,可以依靠BigDecimal來進行
一、比較大小
- 轉換成 long 再比較,(這是long是基本型別,而不是Long物件,物件比較不要用 ==)
Double.doubleToLongBits(0.042421d) == Double.doubleToLongBits(0.2342401d)
Double.doubleToLongBits(453.02d) > Double.doubleToLongBits(34.234501d)
Double.doubleToLongBits(765.07452d) < Double.doubleToLongBits(23432.3034d)
- 轉換成字串,然後用equals比較 (只能用於比較是不是相等)
Float.toString(453.2348f).equals(Float.toString(0.342f))
Double.toString(0.8456d).equals(Float.toString(0.242f))
二、運算
// 0.5382 * 0.78
new BigDecimal(Float.toString(0.5382f)).multiply(new BigDecimal(Float.toString(0.78f)))
// 錯誤的方式 new BigDecimal(0.5382f).multiply(new BigDecimal(0.78f))
注意:要使用new BigDecimal(Float.toString(0.5382f))
而不是new BigDecimal(0.5382f)
,裡面先轉成字串,否則還是可能丟精度
參考:
相關文章
- float double 型別資料極值表示型別
- BOOL,int,float,指標型別的變數a 與“零”的比較語句指標型別變數
- float和double有什麼區別?
- Java面試官:兄弟,你確定double精度比float低嗎?Java面試
- decimal,float和double的區別是什麼?Decimal
- Oracle date 型別比較和String比較Oracle型別
- c語言中%f輸出double型和float型值C語言
- php型別比較表PHP型別
- MySQL 的 timestamp 和 datetime 型別比較MySql型別
- 一個比較float是否相等的工具類
- 使用帶型別判斷的比較判斷型別
- Mysql日期(DATE, TIME, DATETIME, TIMESTAMP)型別的比較MySql型別
- c++ 基本資料型別(int、float、double、long、long long)最大值,最小是表示方法C++資料型別
- Java深海拾遺系列(5)--- 精度計算中的BigDecimal,double和floatJavaDecimal
- JAVA中字串比較equals()和equalsIgnoreCase()的區別Java字串
- Java:利用BigDecimal類巧妙處理Double型別精度丟失JavaDecimal型別
- UFDoble型別計算、比較大小。BigDecimal轉UFDouble型別Decimal
- PHP基礎-資料型別-floatPHP資料型別
- Java的BigDecimal比較大小JavaDecimal
- Java 比較器Java
- UI設計比較流行的插畫型別和運用UI型別
- PHP基礎-資料型別-string和int比較PHP資料型別
- Double型別轉換成BigDicimal問題型別
- Java 支援的資料型別與 MySQL 支援的資料型別對比Java資料型別MySql
- 關於Java和C#的型別對比JavaC#型別
- java比較日期大小Java
- Java和JavaSciprt比較Java
- java--BEAN比較JavaBean
- mysql資料庫中decimal資料型別比較大小MySql資料庫Decimal資料型別
- PyTorch出現錯誤“RuntimeError: Found dtype Double but expected Float”PyTorchError
- 【JS 口袋書】第 7 章:JS 中的型別轉換與比較JS型別
- Java Bean Copy元件的效能比較JavaBean元件
- 常用的Java開發工具比較Java
- C++11獲取double型別的最大最小值C++型別
- C/C++_int/float/double的最大值和最小值C++
- Javascripit型別轉換比較那點事兒,雙等號(==)Java型別
- ES5 / ES6 自定義錯誤型別比較型別
- SQL中欄位比較型別不匹配錯誤:‘cannot be cast to’SQL型別AST