欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java中double類型運(yùn)算結(jié)果異常的解決方法

 更新時間:2016年12月13日 08:52:20   投稿:jingxian  
下面小編就為大家?guī)硪黄猨ava中double類型運(yùn)算結(jié)果異常的解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

問題:

對兩個double類型的值進(jìn)行運(yùn)算,有時會出現(xiàn)結(jié)果值異常的問題。比如:

System.out.println(19.99+20);
  System.out.println(1.0-0.66);
  System.out.println(0.033*100);
  System.out.println(12.3/100);

輸出:

39.989999999999995
0.33999999999999997
3.3000000000000003
0.12300000000000001

解決方法:

Java中的簡單浮點數(shù)類型float和double不能夠進(jìn)行運(yùn)算,因為大多數(shù)情況下是正常的,但是偶爾會出現(xiàn)如上所示的問題。這個問題其實不是JAVA的bug,因為計算機(jī)本身是二進(jìn)制的,而浮點數(shù)實際上只是個近似值,所以從二進(jìn)制轉(zhuǎn)化為十進(jìn)制浮點數(shù)時,精度容易丟失,導(dǎo)致精度下降。

要保證精度就要使用BigDecimal類,而且不能直接從double直接轉(zhuǎn)BigDecimal,要將double轉(zhuǎn)string再轉(zhuǎn)BigDecimal。也就是不能使用BigDecimal(double val) 方法,你會發(fā)現(xiàn)沒有效果。要使用BigDecimal(String val) 方法。具體例子如下所示。

double類型四則運(yùn)算例子:

1、相加

public static double add(double a1, double b1) { 
   BigDecimal a2 = new BigDecimal(Double.toString(a1)); 
   BigDecimal b2 = new BigDecimal(Double.toString(b1)); 
   return a2.add(b2).doubleValue(); 
  }

2、相減

public static double sub(double a1, double b1) { 
   BigDecimal a2 = new BigDecimal(Double.toString(a1)); 
   BigDecimal b2 = new BigDecimal(Double.toString(b1)); 
   return a2.subtract(b2).doubleValue(); 
  }

3、相乘

public static double mul(double a1, double b1) { 
   BigDecimal a2 = new BigDecimal(Double.toString(a1)); 
   BigDecimal b2 = new BigDecimal(Double.toString(b1)); 
   return a2.multiply(b2).doubleValue(); 
  }

4、相除

public static double div(double a1, double b1, int scale) {
  if (scale < 0) { 
   throw new IllegalArgumentException("error"); 
  }
  BigDecimal a2 = new BigDecimal(Double.toString(a1)); 
  BigDecimal b2 = new BigDecimal(Double.toString(b1)); 
  return a2.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); 
 }

scale參數(shù)為除不盡時,指定精度。

以上這篇java中double類型運(yùn)算結(jié)果異常的解決方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java如何將一個float型數(shù)的整數(shù)部分和小數(shù)分別輸出顯示

    java如何將一個float型數(shù)的整數(shù)部分和小數(shù)分別輸出顯示

    這篇文章主要介紹了java如何將一個float型數(shù)的整數(shù)部分和小數(shù)分別輸出顯示,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 一文詳解Java中枚舉類的使用

    一文詳解Java中枚舉類的使用

    這篇文章主要介紹了深入淺出講解Java中的枚舉類,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,感興趣的朋友可以了解下
    2022-11-11
  • 詳解Spring MVC的異步模式(高性能的關(guān)鍵)

    詳解Spring MVC的異步模式(高性能的關(guān)鍵)

    本篇文章主要介紹了詳解Spring MVC的異步模式(高性能的關(guān)鍵),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Java 函數(shù)式編程要點總結(jié)

    Java 函數(shù)式編程要點總結(jié)

    函數(shù)式編程并不是Java新提出的概念,其與指令編程相比,強(qiáng)調(diào)函數(shù)的計算比指令的計算更重要;與過程化編程相比,其中函數(shù)的計算可以隨時調(diào)用。Java8新引入函數(shù)式編程方式,大大的提高了編碼效率。本文將對涉及的對象等進(jìn)行統(tǒng)一的學(xué)習(xí)及記錄。
    2021-06-06
  • Spring Boot如何使用JDBC獲取相關(guān)的數(shù)據(jù)詳解

    Spring Boot如何使用JDBC獲取相關(guān)的數(shù)據(jù)詳解

    這篇文章主要給大家介紹了關(guān)于Spring Boot如何使用JDBC獲取相關(guān)數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 如何優(yōu)雅的處理Spring Boot異常信息詳解

    如何優(yōu)雅的處理Spring Boot異常信息詳解

    這篇文章主要給大家介紹了關(guān)于如何優(yōu)雅的處理Spring Boot異常信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Java幾個重要的關(guān)鍵字詳析

    Java幾個重要的關(guān)鍵字詳析

    這篇文章主要介紹了Java幾個重要的關(guān)鍵字詳析,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考一下,需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助
    2022-07-07
  • 如何使用axis調(diào)用WebService及Java?WebService調(diào)用工具類

    如何使用axis調(diào)用WebService及Java?WebService調(diào)用工具類

    Axis是一個基于Java的Web服務(wù)框架,可以用來調(diào)用Web服務(wù)接口,下面這篇文章主要給大家介紹了關(guān)于如何使用axis調(diào)用WebService及Java?WebService調(diào)用工具類的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • Java自定義簡單標(biāo)簽實例

    Java自定義簡單標(biāo)簽實例

    Java自定義簡單標(biāo)簽可以方便的在頁面輸出信息,并且對于權(quán)限的控制,和對于Jsp標(biāo)簽和servlet代碼的分離有著很好的作用
    2013-07-07
  • RocketMQ?producer發(fā)送者淺析

    RocketMQ?producer發(fā)送者淺析

    RocketMQ生產(chǎn)者是一種高性能、可靠的消息發(fā)送者,能夠?qū)⑾⒖焖佟⒖煽康匕l(fā)送到RocketMQ消息隊列中。它具有多種消息發(fā)送模式和消息發(fā)送方式,可以根據(jù)不同的業(yè)務(wù)需求進(jìn)行靈活配置
    2023-04-04

最新評論