<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Java金額計算的問題

          共 1148字,需瀏覽 3分鐘

           ·

          2021-06-03 22:35

          點擊上方藍色字體,選擇“標星公眾號”

          優(yōu)質(zhì)文章,第一時間送達

          來源 |  urlify.cn/iEZBja

          簡介:金額計算在一些支付類項目和電商項目中十分常見,很多開發(fā)在日常的寫代碼中時長會使用加減乘除等計算,但是有一些新手同學一旦使用錯了方式,往往會挨上領(lǐng)導的批評,這次就來看下金額計算中的幾個注意點


          1.包裝類型比對

          看代碼

          結(jié)果:

          可以看到,兩個包裝類且值都是200的使用 == 的比較的結(jié)果都是false 其他都是true 接下來看下源碼一探究竟

          通過Integer的源碼可以發(fā)現(xiàn)當Integer的范圍是 -128~127的時候是直接從緩存里面取的返回值,而超過以后是重新new一個對象返回,當然使用==的時候就會是false 而Integer 和 int比較的時候包裝類會先轉(zhuǎn)成int 再做比較,所以不會出現(xiàn)false的情況了,同時大家可以看到在編譯階段編輯器就提示了有問題。


          2、多精度計算問題

          可以看到有兩個計算出現(xiàn)了精度問題 Java中的簡單浮點數(shù)類型float和double不能夠精確運算。這個問題其實不是JAVA的bug,因為計算機本身是二進制的,而浮點數(shù)實際上只是個近似值,所以從二進制轉(zhuǎn)化為十進制浮點數(shù)時,精度容易丟失,導致精度下降

          開發(fā)中可以通過 BigDecimal 進行數(shù)值類型的計算。

          數(shù)據(jù)庫也是一樣,mysql中有float和double類型,通過sql直接累加數(shù)據(jù)也會有精度缺失的情況。如果要精確的數(shù)值計算,要使用mysql的decimal類型

          3、除以0

          除以0其實在數(shù)學中是沒有意義的,但是在java的日常開發(fā)中有些場景需要特別注意, 雖然這種場景不多,但還是需要特別注意下。

          (1)1除以0

          (2)0除以0

          原理是因為java的float和double使用了IEEE 754標準。這個標準規(guī)定:浮點數(shù)除以0等于正無窮或負無窮。


          4、float轉(zhuǎn)double

          原因是Float類中有一個doubleValue方法,返回值是一個double類型,這樣會很容易的以為這是float轉(zhuǎn)換double類型。但是轉(zhuǎn)換之后精度缺失了。


          總結(jié):所以在日常開發(fā)中一些不起眼的細節(jié)往往造就了各種奇奇怪怪的bug,這些細節(jié)時時刻刻在提醒著開發(fā)者們,注重基礎(chǔ)知識的積累是有多么重要。







          瀏覽 84
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色淫五月天 | 免费三级网站 | 欧美bbbWbbbW | 五月天免费黄色视频 | 九九这里只有精品 |