java中double自減問題(java double相減)

  • 1、java 小問題 double 做減法溢出
  • 2、關於JAVA double類型相減的問題
  • 3、java double類型變數,相加或相減後面小數為什麼會不一樣呢?
  • 4、java中double減去取整的double為何會在0.00000000004左右徘徊,如1.2-(int)1.2 = 0.19999996,求大神解釋
  • 5、java int double 加減法 基本類型運算問題

用BigDecimal計算

import java.math.BigDecimal;

import java.math.MathContext;

public class $ {

    public static void main(String[] args) {

        // 0.1*0.1+0.2*0.2+(-0.3)*0.3

        // 0.1*0.1+0.2*0.2-0.3*0.3

        BigDecimal a = new BigDecimal(0.1);

        a = a.multiply(a, MathContext.DECIMAL32);

        BigDecimal b = new BigDecimal(0.2);

        b = b.multiply(b, MathContext.DECIMAL32);

        BigDecimal c = new BigDecimal(0.3);

        c = c.multiply(c, MathContext.DECIMAL32);

        a = a.add(b, MathContext.DECIMAL32);

        a = a.subtract(c, MathContext.DECIMAL32);

        

        System.out.println(a.doubleValue());

    }

}

-0.04

可以相減 你的寫法有錯

輸出函數的原型是print(String) 也就是括弧裡面的是String類型

多個string連接的時候用就 ” + ” 連接 你這裡出現了 ” – ” 號 這是不允許的(double類型默認會調用toString()將數據轉換成string)

當你用:System.out.println(“兩個數的差是:”+a3-a4);減號被認為是錯誤的…

正確的寫法應該是:System.out.println(“兩個數的差是:”+(a3-a4));

至於你說 加 可以 只怕結果不是你想要的吧

乘除是因為運算符的優先順序問題可以

建議你去看一些相關的基礎吧

該問題主要原因是浮點數值採用二進位系統表示,而在二進位系統中無法精確的表示1/10。就像我們平時使用的十進位中無法精確的表示1/3是一樣的道理,如果需要在數值計算中不含有任何誤差,要使用BigDecimal類進行編程。

具體的代碼如下

//兩個Double數值相加

public static Double add (Double value01,Double value02){

BigDecimal b1=new BigDecimal(value01.toString());

BigDecimal b2=new BigDecimal(value02.toString());

return b1.add(b2).doubleValue();

}

//兩個Double數值相減

public static Double sub (Double value01,Double value02){

BigDecimal b1=new BigDecimal(value01.toString());

BigDecimal b2=new BigDecimal(value02.toString());

return b1.subtract(b2).doubleValue();

}

假如除數和被除數都是int型,那麼得到的數也就是整數 1。

然後你將1賦值給double,他會自動轉換類型,變成double 1.0(轉換有一定規則,你查下就知道)。所有輸出值為1.0。

如果你想讓他輸出為1.5,你可以改變除數和被除數的類型(改變其中一個也可以,跟之前一樣的知識點)

1.-2.8421709430404007E-14表示-2.8421709430404007乘以10的-14次方,計算機能準確表示十進位的整數,但不能準確表示十進位小數。System.out.println(150.0+0+183.28-0-183.28-150.0);150.0+0+183.28-0-183.28-150.0的結果為0.00000000000…,只不過你的輸出結果為double型,精度比較高,沒有超出列印函數(println之類的)的默認精度而已。

2.System.out.println(((150.00)+0.00+(183.28))-(0.00+(183.28)+(150.00)));中將((150.00)+0.00+(183.28))作為個運算單元,二個括弧內的運算的結果肯定一樣,與精度無關。結果當然為0。

3.用System.out.println((long)(150.0+0+183.28-0-183.28-150.0));(150.0+0+183.28-0-183.28-150.0)的結果為0.00000000…,轉換成long,捨棄小數位,結果自然為0;

4.System.out.println(150.0F+0+183.28F-0-183.28F-150.0F); 運算結果為float型,超出列印函數(println之類的)的默認精度,截取下來為0。

不知道解釋的你滿意不?

原創文章,作者:VNFP2,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/127008.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
VNFP2的頭像VNFP2
上一篇 2024-10-03 23:13
下一篇 2024-10-03 23:13

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Python官網中文版:解決你的編程問題

    Python是一種高級編程語言,它可以用於Web開發、科學計算、人工智慧等領域。Python官網中文版提供了全面的資源和教程,可以幫助你入門學習和進一步提高編程技能。 一、Pyth…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • 如何解決WPS保存提示會導致宏不可用的問題

    如果您使用過WPS,可能會碰到在保存的時候提示「文件中含有宏,保存將導致宏不可用」的問題。這個問題是因為WPS在默認情況下不允許保存帶有宏的文件,為了解決這個問題,本篇文章將從多個…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29

發表回復

登錄後才能評論