在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

BigDecimal實際開發的三坑是什么

汽車電子技術 ? 來源:程序猿知秋 ? 作者:知秋 ? 2023-02-16 14:39 ? 次閱讀

坑1:初始化使用double類型數據

public class TestBigDecimal {
    public static void main(String[] args){
        BigDecimal b1=new BigDecimal(0.22);
        BigDecimal b2=new BigDecimal("0.22");
        System.out.println("b1的值:"+b1);
        System.out.println("b2的值:"+b2);
    }
}

結果

b1的值:

0.2200000000000000011102230246251565404236316680908203125

b2的值:0.22

原因:

構造方法參數為double類型有一定的不可預知性,表面上看是0.22,實際上是0.2200000000000000011102230246251565404236316680908203125,0.22在java中無法準確的表示為double

解決方案:

1.采用String 類型的構造參數。

2.如果必須要使用double,則可使用Double.toString(double) 方法轉換成String, 再采用Bigdecimal的構造函數.

坑2:除法計算

public static void t1(){
    BigDecimal b1=new BigDecimal("10");
    BigDecimal b2=new BigDecimal("3");
    System.out.println(b1.divide(b2).setScale(2,BigDecimal.ROUND_HALF_UP));
}

結果:

Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result

原因:

當遇到除不盡的情況時,會報以上錯誤

解決方案:

System.out.println(b1.divide(b2,2,BigDecimal.ROUND_HALF_UP));

坑3:equals方法

public static void t2(){
    BigDecimal b1=new BigDecimal("0.0");
    BigDecimal b2=BigDecimal.ZERO;
    System.out.println(b1.equals(b2));
}

結果:

false

原因:

BigDecimal 的equals 方法不僅僅是比較值,還會比較scale的位數是否相等,而Bigdecimal.ZERO的scale是0,所以為 false

解決方案:

使用compareTo方法. System.out.println(b1.compareTo(b2)==0)

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 參數
    +關注

    關注

    11

    文章

    1859

    瀏覽量

    32406
  • Doubler
    +關注

    關注

    0

    文章

    7

    瀏覽量

    7208
  • string
    +關注

    關注

    0

    文章

    40

    瀏覽量

    4741
收藏 人收藏

    評論

    相關推薦

    R128點屏踩筆記

    本文所整理的R128點屏踩筆記均是在參考以下應用開發案例進行屏幕適配時遇到的實際開發問題,涵蓋了屏幕花屏、屏幕白屏、LVGL顯示顏色錯誤等常見問題的解決方法。
    的頭像 發表于 12-03 10:17 ?1445次閱讀
    R128點屏踩<b class='flag-5'>坑</b>筆記

    死創業者的硬件產品——“十大

    死創業者的硬件產品——“十大”第一:錯把產品原型當批量生產第二:以為可以修補bug;第
    發表于 11-14 15:59

    NodeMCU開發板踩經歷分享

    寫在前面今天入手了一個NodeMCU的板子,準備學習一下物聯網相關的知識。不過由于博主學藝不精,在第一步燒寫固件上就踩了,所以就想著把自己的踩經歷寫出來分享給大家,希望能有一些幫助~ 材料準備硬件:NodeMCU開發板*1(
    發表于 11-01 07:55

    mongoose開發中遇到的及解決方案

    1. 本文不對mongoose的功能作陳述,只記錄下自己開發中遇到的,及解決方案。嵌入了mongoose的代碼編譯通過,在調試運行(gdb)時候,卻發生了段錯誤(Segmentation fault),如下所示:...
    發表于 12-16 06:56

    大學時光、單片機開發,嵌入式網站推薦

    大學時光、單片機開發,嵌入式網站推薦
    發表于 11-20 11:51 ?8次下載
    入<b class='flag-5'>坑</b>大學時光、單片機<b class='flag-5'>開發</b>,嵌入式網站推薦

    關于藍橋杯單片機開發板矩陣鍵盤的一些

    關于藍橋杯單片機開發板矩陣鍵盤的一些
    發表于 11-23 17:36 ?2次下載
    關于藍橋杯單片機<b class='flag-5'>開發</b>板矩陣鍵盤的一些<b class='flag-5'>坑</b>

    ESP-32開發歷程()ESP-IDF 定時器使用

    ESP-32開發歷程()ESP-IDF 定時器使用前言一、開發基礎二、定時器使用1.官方描述2.讀入數據總結ESP-32開發
    發表于 12-08 12:06 ?13次下載
    ESP-32<b class='flag-5'>開發</b>踩<b class='flag-5'>坑</b>歷程(<b class='flag-5'>三</b>)ESP-IDF 定時器使用

    BigDecimal使用失誤的原因分析

    BigDecimal 自身也提供了很多構造器方法,這些構造器方法使用不當可能會造成不必要的麻煩甚至是金額損失,從而引起事故資損。
    的頭像 發表于 07-10 14:35 ?1004次閱讀

    軟件開發外包有哪些要注意?

    提起軟件開發外包,大家并不陌生,因為很多企業已經選擇了軟件外包,但是有人會說軟件開發外包就是個,千萬別選擇軟件外包。 ? 其實軟件外包是沒有問題的,問題出在選擇的軟件開發外包公司上面
    的頭像 發表于 10-11 18:36 ?1477次閱讀

    bigdecimal轉string類型

    BigDecimal轉換為String類型是在Java編程中常常遇到的一個問題。BigDecimal是Java中用于表示高精度十進制數的類,而String則是用于表示文本字符串的數據類型。在某些
    的頭像 發表于 11-30 11:09 ?6492次閱讀

    怎么把bigdecimal轉成string

    BigDecimal轉換為String是一項常見的任務,在Java的開發中經常會涉及到將數值進行格式化,并在不同的環境中傳遞。本文將詳解以下幾個方面的內容: 什么是BigDecimal
    的頭像 發表于 11-30 11:11 ?1444次閱讀

    bigdecimal轉string類型避免空指針

    在Java中,BigDecimal是用于處理高精度數字計算的類。它提供了一種有效的方法來避免使用浮點數的精確度損失問題。然而,在將BigDecimal對象轉換為String類型時,需要特別小心以避
    的頭像 發表于 11-30 11:12 ?2790次閱讀

    bigdecimal轉字符串保留兩位小數

    BigDecimals是Java中用于表示任意精度的十進制數的類。在許多應用程序中,可能需要將一個BigDecimal轉換為字符串并保留兩位小數。在本文中,我們將探討如何使用BigDecimal
    的頭像 發表于 11-30 11:18 ?4534次閱讀

    bigdecimal的加減乘除java

    BigDecimal是Java中提供的一個用于精確計算的類,它可以實現浮點數的精確加減乘除運算,避免了在使用浮點數進行計算時可能出現的舍入誤差。 首先,我們需要明確一點,浮點數在計算機中是以二進制
    的頭像 發表于 11-30 11:19 ?1515次閱讀

    bigdecimal是什么數據類型

    BigDecimal是Java編程語言中的一個類,用于表示任意精度的十進制數。它是在數值計算方面提供更高精度和更多功能的一個解決方案。常規的浮點數類型(如float和double)有精度限制,可能會
    的頭像 發表于 11-30 11:21 ?3178次閱讀
    主站蜘蛛池模板: www.色99| 日本黄色大片在线播放视频免费观看 | 四虎影院最新网址 | 天天色姑娘 | 伊人成伊人成综合网2222 | 不卡午夜 | 511韩国理论片在线观看 | 人人干干 | 人人插人人艹 | 九九九精品视频免费 | 色多多高清在线观看视频www | 康熙古代高h细节肉爽文全文 | aa小视频| 天天噜日日噜夜夜噜 | www狠狠操| 天天综合天天做天天综合 | 免费黄色三级 | 超级乱淫伦网站 | 欧美性一区二区三区五区 | 国产小视频在线免费观看 | 两性毛片 | 在线天堂bt种子 | 男人操女人免费 | 四虎在线观看一区二区 | 久久久夜色精品国产噜噜 | 免费a级午夜绝情美女视频 免费jlzzjlzz在线播放视频 | 欧美一二 | 很黄很黄叫声床戏免费视频 | 你懂的免费| 欧美色图影院 | 国产女同在线观看 | 欧美十次| 片黄免费| 一级一片免费视频播放 | 日本精品一在线观看视频 | 黄在线网站 | 国产精品一区二区综合 | 福利片午夜 | 欧美色88| 免费看国产一级片 | 久久久噜噜噜久久网 |