最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言:

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

問題

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

/**
 * 校驗(yàn)價格是否一致
 *
 * @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)過斷點(diǎn)排查問題發(fā)現(xiàn) frontPrice 的值不是 0.2,而是 0.200000000000000011102230246251565404236316680908203125 。

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

解決

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

簡單翻一下:

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

  • 這個構(gòu)造函數(shù)的結(jié)果在某種程度上是不可預(yù)測的。你可能會覺得new BigDecimal(0.1)會創(chuàng)建一個剛好等于 0.1 的 BigDecimal,但它實(shí)際上等于 0.1000000000000000055511151231257827021181583404541015625 。這是因?yàn)?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)文章

  • Java簡單計(jì)算圓周率完整示例

    Java簡單計(jì)算圓周率完整示例

    這篇文章主要介紹了Java簡單計(jì)算圓周率,結(jié)合完整實(shí)例形式分析了Java計(jì)算圓周率的原理與操作技巧,代碼備有較為詳盡的注釋便于理解,需要的朋友可以參考下
    2018-05-05
  • Java網(wǎng)絡(luò)編程之UDP網(wǎng)絡(luò)通信詳解

    Java網(wǎng)絡(luò)編程之UDP網(wǎng)絡(luò)通信詳解

    這篇文章主要為大家詳細(xì)介紹了Java網(wǎng)絡(luò)編程中的UDP網(wǎng)絡(luò)通信的原理與實(shí)現(xiàn),文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的可以參考一下
    2022-09-09
  • Spring Security無法調(diào)用接口錯誤的問題解決

    Spring Security無法調(diào)用接口錯誤的問題解決

    記錄一下之前在寫程序的時候遇到的問題,Spring Security無法調(diào)用接口錯誤的問題,本文就來介紹一下解決方法,感興趣的可以了解一下
    2023-08-08
  • 繼承jpa?Repository?寫自定義方法查詢實(shí)例

    繼承jpa?Repository?寫自定義方法查詢實(shí)例

    這篇文章主要介紹了繼承jpa?Repository?寫自定義方法查詢實(shí)例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • JAVA Optional類用法分享

    JAVA Optional類用法分享

    本篇文章主要給大家分析了JAVA中Optional類用法以及代碼分析,跟著小編學(xué)習(xí)下吧。
    2017-12-12
  • elasticsearch kibana簡單查詢講解

    elasticsearch kibana簡單查詢講解

    今天小編就為大家分享一篇關(guān)于elasticsearch kibana簡單查詢講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • java接口語法以及與類的關(guān)系詳解

    java接口語法以及與類的關(guān)系詳解

    接口在JAVA編程語言中是一個抽象類型,是抽象方法的集合,接口通常以interface來聲明。一個類通過繼承接口的方式,從而來繼承接口的抽象方法
    2021-10-10
  • Spring Data Jpa Mysql使用utf8mb4編碼的示例代碼

    Spring Data Jpa Mysql使用utf8mb4編碼的示例代碼

    這篇文章主要介紹了Spring Data Jpa Mysql使用utf8mb4編碼的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Java并發(fā)編程中的synchronized關(guān)鍵字詳細(xì)解讀

    Java并發(fā)編程中的synchronized關(guān)鍵字詳細(xì)解讀

    這篇文章主要介紹了Java并發(fā)編程中的synchronized關(guān)鍵字詳細(xì)解讀,在Java早期版本中,synchronized 屬于 重量級鎖,效率低下,這是因?yàn)楸O(jiān)視器鎖(monitor)是依賴于底層的操作系統(tǒng)的Mutex Lock來實(shí)現(xiàn)的,Java 的線程是映射到操作系統(tǒng)的原生線程之上的,需要的朋友可以參考下
    2023-12-12
  • Netty分布式ByteBuf使用page級別的內(nèi)存分配解析

    Netty分布式ByteBuf使用page級別的內(nèi)存分配解析

    這篇文章主要介紹了Netty分布式ByteBuf使用page級別的內(nèi)存分配解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03

最新評論

海林市| 鄯善县| 保康县| 紫阳县| 沾化县| 孟州市| 当阳市| 曲沃县| 革吉县| 旬阳县| 老河口市| 雅安市| 平远县| 陆河县| 峨边| 云安县| 古交市| 老河口市| 永济市| 沙湾县| 布拖县| 云梦县| 察哈| 绵竹市| 馆陶县| 阳原县| 车致| 德兴市| 漳平市| 鲁山县| 文成县| 南川市| 兴安县| 鄱阳县| 永清县| 延庆县| 社会| 江口县| 团风县| 获嘉县| 如东县|