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

JAVA 中的大數(shù)字操作類詳解

 更新時間:2024年10月18日 09:46:39   作者:當代紅領巾  
Java的BigInteger類用于處理超出int和long范圍的大整數(shù),而BigDecimal類則用于高精度的浮點數(shù)運算,這兩個類都是Number的子類,提供了一系列方法執(zhí)行加減乘除等運算,BigInteger不支持表示小數(shù),只能表示整數(shù),BigDecimal可以控制小數(shù)位數(shù)和舍入方式,感興趣的朋友一起看看吧

字符串表示大數(shù)字, "123456789123456789123456789123456789123456789"

(1)java.math.BigInteger 大整數(shù)操作類

(2)java.math.BigDecimal 大小數(shù)操作類

        這兩個類和 Java 中的表示數(shù)字的基本數(shù)據(jù)類型的包裝類(Byte、Short、Integer、Long、 Double、Float)都是繼承自 Number,即 Number 類的子類。

大整數(shù)操作類:BigInteger 概述

   BigInteger 是一個用于表示任意精度整數(shù)的類。它可以處理僅在 int 或 long 范圍內的整數(shù)運算以及超出這些范圍的整數(shù)。

主要特點

(1)精度:不受 int 和 long 限制,可以處理非常大的整數(shù)。

(2)不支持小數(shù):只能表示整數(shù)。

(3)所有操作(加法、減法、乘法、除法等)都通過方法實現(xiàn),不能直接使用運算符。

使用場景

(1)計算大數(shù)的結果(如科學計算、密碼學等)。

(2)需要精確的整數(shù)計算(如金融、統(tǒng)計分析等)。

(3)需要處理大范圍數(shù)值的算法(如大數(shù)運算、階乘計算等)。

        大整數(shù)操作類:BigInteger 可以操作無限大的整型數(shù)據(jù)。

構造器

        對于 BigInteger 類有很多個構造器,但是最常用的就是有一個 String 類型參數(shù)的構造器:

public BigInteger(String val) {
    this(val, 10);
}

 常用方法

(1)BigInteger add(BigInteger val)

        加法操作;

(2)BigInteger subtract(BigInteger val)

        減法操作;

(3)BigInteger multiply(BigInteger val)

        乘法操作;

(4)BigInteger divide(BigInteger val)

        除法操作(不保留小數(shù)部分);

(5)BigInteger[] divideAndRemainder(BigInteger val)

        除法操作,返回值是一個長度為 2 的數(shù)組,數(shù)組中的第一個元素表示商,數(shù)組中第二個元素表示余 數(shù)。

示例:

import java.math.BigInteger;
public class Test {
    public static void main(String[] args) {
        BigInteger bigInteger1 = new BigInteger("123456789123456789123456789123456789123456789");
        BigInteger bigInteger2 = new BigInteger("123456789123456789123456789123456789123456789");
        System.out.println(bigInteger1);
        System.out.println(bigInteger2);
        // 加法
        BigInteger plus = bigInteger1.add(bigInteger2);
        // 減法
        BigInteger subtract = bigInteger1.subtract(bigInteger2);
        // 乘法
        BigInteger multiply = bigInteger1.multiply(bigInteger2);
        // 除法
        BigInteger divide = bigInteger1.divide(bigInteger2);
        System.out.println(plus);
        System.out.println(subtract);
        System.out.println(multiply);
        System.out.println(divide);
    }
}

打印結果:

大小數(shù)操作類:BigDecimal 

概述

   BigDecimal 是一個用于表示任意精度的浮點數(shù)的類。它具有控制小數(shù)位數(shù)和舍入策略的功能。

主要特點

(1)精度高,不會受到 float 和 double 的限制,適用于需要精確表示小數(shù)點數(shù)據(jù)的場景。

(2)支持控制小數(shù)點后的位數(shù)及舍入方式。

(3)通過方法實現(xiàn)計算,不能直接使用運算符。

使用場景

(1)金融計算:涉及到貨幣或者利息計算時,確保不會因為浮點數(shù)運算導致的精度損失。

(2)科學計算:需要更高精度的小數(shù)計算。

(3)需要高精度結果的任何應用(如價格計算、統(tǒng)計數(shù)據(jù)處理中)。

構造器

        BigDecimal(String val) 創(chuàng)建一個表示字符串參數(shù) val 的 BigDecimal 類型的大小數(shù)對象。

常用方法

(1)BigDecimal add(BigDecimal augend) 加法操作;

(2)BigDecimal subtract(BigDecimal subtrahend) 減法操作;

(3)BigDecimal multiply(BigDecimal multiplicand) 乘法操作;

(4)BigDecimal divide(BigDecimal divisor) 除法操作,如果除不盡,則會報 java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result;

(5)BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) 除法操作,可以設置結果保留的小數(shù)的位數(shù)以及進位模式,scale 參數(shù)表示保留的小數(shù)位數(shù), roundingMode 參數(shù)表示進位模式。BigDecimal 類中定義多個靜態(tài)常量表示進位模式, ROUND_HALF_UP 這個靜態(tài)常量就表示四舍五入。

示例:

import java.math.BigDecimal;
public class Test {
    public static void main(String[] args) {
        BigDecimal bigDecimal1 = new BigDecimal("123456789123456789123456789123456789123456789.123456789123456789123456789123456789123456789");
        BigDecimal bigDecimal2 = new BigDecimal("123456789123456789123456789123456789123456789.123456789123456789123456789123456789123456789");
        System.out.println(bigDecimal1);
        System.out.println(bigDecimal2);
        // 加法
        BigDecimal plus = bigDecimal1.add(bigDecimal2);
        // 減法
        BigDecimal subtract = bigDecimal1.subtract(bigDecimal2);
        // 乘法
        BigDecimal multiply = bigDecimal1.multiply(bigDecimal2);
        // 除法
        BigDecimal divide = bigDecimal1.divide(bigDecimal2);
        System.out.println(plus);
        System.out.println(subtract);
        // 0E-45 是一個科學計數(shù)法的表示方式,表示的是非??拷诹愕臄?shù)。此處的E-45是表示小數(shù)點位置,雖然數(shù)字為零,但由于內部存儲的計算精度導致了這樣的表示。
        // 修改輸出格式以普通數(shù)字顯示
        System.out.println(subtract.stripTrailingZeros().toPlainString());
        System.out.println(multiply);
        System.out.println(divide);
    }
}

打印結果:

 定義聲明一個方法,可以對 double 類型的小數(shù)進行四舍五入的操作

示例:

import java.math.BigDecimal;
public class Test {
    public static void main(String[] args) {
        double i = 3.1415926;
        System.out.println(round(i,2));
    }
    /**
     * 
     * @param num 傳入的 double 類型的數(shù)據(jù)
     * @param scale 保留位數(shù)
     * @return
     */
    public static double round(double num,int scale) {
        BigDecimal decimal = new BigDecimal(num);
        //進行除法操作,除以 1 來控制結果保留多少位小數(shù)
        BigDecimal result =
                decimal.divide(new BigDecimal(1), scale, BigDecimal.ROUND_HALF_UP);
        //把 BigDecimal 類型的結果轉換為 double 類型返回
        return result.doubleValue();
    }
}

打印結果:

到此這篇關于JAVA 中的大數(shù)字操作類的文章就介紹到這了,更多相關java大數(shù)字操作類內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringBoot整合JWT的實現(xiàn)示例

    SpringBoot整合JWT的實現(xiàn)示例

    JWT是目前比較流行的跨域認證解決方案,本文主要介紹了SpringBoot整合JWT的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • IDEA中l(wèi)og4j 無法輸出到本地 properties配置無效問題

    IDEA中l(wèi)og4j 無法輸出到本地 properties配置無效問題

    這篇文章主要介紹了IDEA中l(wèi)og4j 無法輸出到本地 properties配置無效問題,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • JAVA ArrayList詳細介紹(示例)

    JAVA ArrayList詳細介紹(示例)

    本文對JAVA ArrayList做了詳細介紹,文中學到了ArrayList源碼解析、ArrayList遍歷方式、toArray()異常,最后給出了ArrayList示例。
    2013-11-11
  • Java?數(shù)據(jù)結構與算法系列精講之隊列

    Java?數(shù)據(jù)結構與算法系列精講之隊列

    這篇文章主要介紹了Java隊列數(shù)據(jù)結構的實現(xiàn),隊列是一種特殊的線性表,只允許在表的隊頭進行刪除操作,在表的后端進行插入操作,隊列是一個有序表先進先出,想了解更多相關資料的小伙伴可以參考下面文章的詳細內容
    2022-02-02
  • java實現(xiàn)斗地主游戲

    java實現(xiàn)斗地主游戲

    這篇文章主要為大家詳細介紹了java實現(xiàn)斗地主游戲,洗牌、發(fā)牌、看牌,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 關于String.format()格式化輸出方式

    關于String.format()格式化輸出方式

    String.format()是Java的格式化輸出方法,支持多種數(shù)據(jù)類型和格式化選項,它在格式化和拼接字符串時具有較高的靈活性,但效率相對較低,特別是在處理大量數(shù)據(jù)時,在實際編程中,應根據(jù)具體需求選擇合適的字符串拼接方式
    2024-12-12
  • SpringBoot項目集成依賴Mybatis步驟

    SpringBoot項目集成依賴Mybatis步驟

    在本篇文章中小編給大家分享了關于SpringBoot項目如何集成依賴Mybatis的相關知識點內容,有興趣的朋友們學習下。
    2019-06-06
  • Java排序算法之桶排序詳解

    Java排序算法之桶排序詳解

    這篇文章主要介紹了Java排序算法之桶排序詳解,桶排序是將數(shù)組中的元素放到一個一個的桶中,每個桶(bucket)代表一個區(qū)間,里面可以承載一個或者多個元素,然后將桶內的元素進行排序,再按順序遍歷桶,輸出桶內元素,需要的朋友可以參考下
    2023-10-10
  • Java實現(xiàn)計算圖中兩個頂點的所有路徑

    Java實現(xiàn)計算圖中兩個頂點的所有路徑

    這篇文章主要為大家詳細介紹了如何利用Java語言實現(xiàn)計算圖中兩個頂點的所有路徑功能,文中通過示例詳細講解了實現(xiàn)的方法,需要的可以參考一下
    2022-10-10
  • IntelliJ IDEA 使用經(jīng)驗總結(推薦)

    IntelliJ IDEA 使用經(jīng)驗總結(推薦)

    這篇文章主要介紹了IntelliJ IDEA 使用經(jīng)驗總結,非常不錯,具有參考價值,需要的朋友可以參考下
    2018-02-02

最新評論