亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

注意Java中?new?BigDecimal(double?val)?的使用

 更新時間:2022年07月22日 08:53:26   作者:??編程大椰子???  
這篇文章主要介紹了注意Java中?new?BigDecimal(double?val)?的使用,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下

前言:

今天下午跑單元測試報錯,發(fā)現(xiàn)一個關(guān)于 new BigDecimal(double val) 的代碼問題,總結(jié)下。

問題

業(yè)務(wù)代碼:

/**
 * 校驗價格是否一致
 *
 * @param frontPrice 前端商品價格
 * @param realPrice  商品系統(tǒng)價格
 * @return boolean  true 相等
 */
public static boolean comparePrice(BigDecimal frontPrice, BigDecimal realPrice) {
 ? ?return frontPrice.compareTo(realPrice) == 0;
}

測試代碼:

/**
 * 前端價格
 */
BigDecimal forntPrice = new BigDecimal(0.2);

然后測試 comparePrice 方法總是返回 false,frontPrice 和 realPrice 明明是相等的, 都是0.2。

經(jīng)過斷點排查問題發(fā)現(xiàn) frontPrice 的值不是 0.2,而是 0.200000000000000011102230246251565404236316680908203125 。

我靠,怎么出現(xiàn)這種情況,BigDecimal 不是精準運算的嗎?

解決

查看相關(guān)文檔:

簡單翻一下:

將 double 類型轉(zhuǎn)換成 BigDecimal 類型。

  • 這個構(gòu)造函數(shù)的結(jié)果在某種程度上是不可預(yù)測的。你可能會覺得new BigDecimal(0.1)會創(chuàng)建一個剛好等于 0.1 的 BigDecimal,但它實際上等于 0.1000000000000000055511151231257827021181583404541015625 。這是因為 0.1 不能被精確地表示為一個雙精度數(shù)。
  • String 構(gòu)造函數(shù)是完全可預(yù)測的,new BigDecimal("0.1")會創(chuàng)建一個完全等于 0.1 的 BigDecimal,建議優(yōu)先使用 String 構(gòu)造函數(shù)。
  • 如果必須使用 double 作為轉(zhuǎn)換源時,可以使用 BigDecimal.valueOf(0.1) ,它返回的結(jié)果也是精確的。

總結(jié)

將 double 類型轉(zhuǎn)換為 BigDecimal 類型的時候,不要使用new BigDecimal(0.1)這個構(gòu)造函數(shù),應(yīng)為它得到的結(jié)果是不精確的,

使用BigDecimal.valueOf(0.1)new BigDecimal("0.1") 。

使用 IDEA 編碼的時候會給警告提示:

到此這篇關(guān)于注意Java中 new BigDecimal(double val) 的使用的文章就介紹到這了,更多相關(guān)Java new BigDecimal內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Boot打包war jar 部署tomcat

    Spring Boot打包war jar 部署tomcat

    這篇文章主要介紹了Spring Boot打包war jar 部署tomcat的相關(guān)資料,需要的朋友可以參考下
    2017-10-10
  • Java實現(xiàn)簡單的日歷界面

    Java實現(xiàn)簡單的日歷界面

    這篇文章主要為大家詳細介紹了Java實現(xiàn)簡單的日歷界面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • IntelliJ IDEA 安裝目錄的核心文件的功能及用法

    IntelliJ IDEA 安裝目錄的核心文件的功能及用法

    這篇文章我們主要講解一下 IntelliJ IDEA 安裝目錄中的一些核心文件的功能及用法,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-10-10
  • 單例模式的反射漏洞和反序列化漏洞代碼實例

    單例模式的反射漏洞和反序列化漏洞代碼實例

    這篇文章主要介紹了單例模式的反射漏洞和反序列化漏洞,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Java System.setProperty()用法詳解

    Java System.setProperty()用法詳解

    這篇文章主要介紹了Java System.setProperty()用法詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 詳解spring mvc4使用及json 日期轉(zhuǎn)換解決方案

    詳解spring mvc4使用及json 日期轉(zhuǎn)換解決方案

    本篇文章主要介紹了spring mvc4使用及json 日期轉(zhuǎn)換解決方案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • SpringCloud集成Hystrix熔斷過程分步分解

    SpringCloud集成Hystrix熔斷過程分步分解

    通過hystrix可以解決雪崩效應(yīng)問題,它提供了資源隔離、降級機制、融斷、緩存等功能。接下來通過本文給大家分享SpringCloud集成Hystrix熔斷,感興趣的朋友一起看看吧
    2022-09-09
  • 從零構(gòu)建可視化jar包部署平臺JarManage教程

    從零構(gòu)建可視化jar包部署平臺JarManage教程

    這篇文章主要為大家介紹了從零構(gòu)建可視化jar包部署平臺JarManage教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • WebClient拋UnsupportedMediaTypeException異常解決

    WebClient拋UnsupportedMediaTypeException異常解決

    這篇文章主要為大家介紹了WebClient拋UnsupportedMediaTypeException異常的解決方案,文中給大家介紹了六中方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • Java的DataInputStream和DataOutputStream數(shù)據(jù)輸入輸出流

    Java的DataInputStream和DataOutputStream數(shù)據(jù)輸入輸出流

    這里我們來看一下Java的DataInputStream和DataOutputStream數(shù)據(jù)輸入輸出流的使用示例,兩個類分別繼承于FilterInputStream和FilterOutputStream:
    2016-06-06

最新評論