最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

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

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

主要特點(diǎn)

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

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

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

使用場(chǎng)景

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

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

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

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

構(gòu)造器

        對(duì)于 BigInteger 類(lèi)有很多個(gè)構(gòu)造器,但是最常用的就是有一個(gè) String 類(lèi)型參數(shù)的構(gòu)造器:

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)

        除法操作,返回值是一個(gè)長(zhǎng)度為 2 的數(shù)組,數(shù)組中的第一個(gè)元素表示商,數(shù)組中第二個(gè)元素表示余 數(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);
    }
}

打印結(jié)果:

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

概述

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

主要特點(diǎn)

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

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

(3)通過(guò)方法實(shí)現(xiàn)計(jì)算,不能直接使用運(yùn)算符。

使用場(chǎng)景

(1)金融計(jì)算:涉及到貨幣或者利息計(jì)算時(shí),確保不會(huì)因?yàn)楦↑c(diǎn)數(shù)運(yùn)算導(dǎo)致的精度損失。

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

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

構(gòu)造器

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

常用方法

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

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

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

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

(5)BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) 除法操作,可以設(shè)置結(jié)果保留的小數(shù)的位數(shù)以及進(jìn)位模式,scale 參數(shù)表示保留的小數(shù)位數(shù), roundingMode 參數(shù)表示進(jìn)位模式。BigDecimal 類(lèi)中定義多個(gè)靜態(tài)常量表示進(jìn)位模式, ROUND_HALF_UP 這個(gè)靜態(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 是一個(gè)科學(xué)計(jì)數(shù)法的表示方式,表示的是非??拷诹愕臄?shù)。此處的E-45是表示小數(shù)點(diǎn)位置,雖然數(shù)字為零,但由于內(nèi)部存儲(chǔ)的計(jì)算精度導(dǎo)致了這樣的表示。
        // 修改輸出格式以普通數(shù)字顯示
        System.out.println(subtract.stripTrailingZeros().toPlainString());
        System.out.println(multiply);
        System.out.println(divide);
    }
}

打印結(jié)果:

 定義聲明一個(gè)方法,可以對(duì) double 類(lèi)型的小數(shù)進(jìn)行四舍五入的操作

示例:

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 類(lèi)型的數(shù)據(jù)
     * @param scale 保留位數(shù)
     * @return
     */
    public static double round(double num,int scale) {
        BigDecimal decimal = new BigDecimal(num);
        //進(jìn)行除法操作,除以 1 來(lái)控制結(jié)果保留多少位小數(shù)
        BigDecimal result =
                decimal.divide(new BigDecimal(1), scale, BigDecimal.ROUND_HALF_UP);
        //把 BigDecimal 類(lèi)型的結(jié)果轉(zhuǎn)換為 double 類(lèi)型返回
        return result.doubleValue();
    }
}

打印結(jié)果:

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

相關(guān)文章

  • Redisson 分布式延時(shí)隊(duì)列 RedissonDelayedQueue 運(yùn)行流程

    Redisson 分布式延時(shí)隊(duì)列 RedissonDelayedQueue 運(yùn)行流程

    這篇文章主要介紹了Redisson分布式延時(shí)隊(duì)列 RedissonDelayedQueue運(yùn)行流程,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • Java數(shù)據(jù)結(jié)構(gòu) 遞歸之迷宮回溯案例講解

    Java數(shù)據(jù)結(jié)構(gòu) 遞歸之迷宮回溯案例講解

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)遞歸之迷宮回溯案例講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 詳細(xì)總結(jié)Java創(chuàng)建文件夾的方法及優(yōu)缺點(diǎn)

    詳細(xì)總結(jié)Java創(chuàng)建文件夾的方法及優(yōu)缺點(diǎn)

    很多小伙伴都不知道如何用Java創(chuàng)建文件夾,今天給大家整理了這篇文章,文中有非常詳細(xì)的方法介紹及方法的優(yōu)缺點(diǎn),對(duì)正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • 基于線程、并發(fā)的基本概念(詳解)

    基于線程、并發(fā)的基本概念(詳解)

    下面小編就為大家?guī)?lái)一篇基于線程、并發(fā)的基本概念(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • 詳解Java的Hibernate框架中的注解與緩存

    詳解Java的Hibernate框架中的注解與緩存

    這篇文章主要介紹了詳解Java的Hibernate框架中的注解與緩存,Hibernate是Java的SSH三大web開(kāi)發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • Spring?Boot集成Redisson實(shí)現(xiàn)延遲隊(duì)列

    Spring?Boot集成Redisson實(shí)現(xiàn)延遲隊(duì)列

    本文詳細(xì)介紹了電商支付場(chǎng)景中利用Redisson的RDelayedQueue實(shí)現(xiàn)訂單的延遲關(guān)閉功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-08-08
  • 淺談一下Java為什么不能使用字符流讀取非文本的二進(jìn)制文件

    淺談一下Java為什么不能使用字符流讀取非文本的二進(jìn)制文件

    這篇文章主要介紹了淺談一下為什么不能使用字符流讀取非文本的二進(jìn)制文件,剛學(xué)Java的IO流部分時(shí),書(shū)上說(shuō)只能使用字節(jié)流去讀取圖片、視頻等非文本二進(jìn)制文件,不能使用字符流,否則文件會(huì)損壞,需要的朋友可以參考下
    2023-04-04
  • selenium-java實(shí)現(xiàn)自動(dòng)登錄跳轉(zhuǎn)頁(yè)面方式

    selenium-java實(shí)現(xiàn)自動(dòng)登錄跳轉(zhuǎn)頁(yè)面方式

    利用Selenium和Java語(yǔ)言可以編寫(xiě)一個(gè)腳本自動(dòng)刷新網(wǎng)頁(yè),首先,需要確保Google瀏覽器和Chrome-Driver驅(qū)動(dòng)的版本一致,通過(guò)指定網(wǎng)站下載對(duì)應(yīng)版本的瀏覽器和驅(qū)動(dòng),在Maven項(xiàng)目中添加依賴(lài),編寫(xiě)腳本實(shí)現(xiàn)網(wǎng)頁(yè)的自動(dòng)刷新,此方法適用于需要頻繁刷新網(wǎng)頁(yè)的場(chǎng)景,簡(jiǎn)化了操作,提高了效率
    2024-11-11
  • 使用ANT與YUI壓縮js的實(shí)現(xiàn)方法

    使用ANT與YUI壓縮js的實(shí)現(xiàn)方法

    本篇文章是對(duì)使用ANT與YUI壓縮js的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Mybatis中多個(gè)對(duì)象包含同一個(gè)對(duì)象的處理操作

    Mybatis中多個(gè)對(duì)象包含同一個(gè)對(duì)象的處理操作

    這篇文章主要介紹了Mybatis中多個(gè)對(duì)象包含同一個(gè)對(duì)象的處理操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評(píng)論

涞源县| 墨竹工卡县| 高青县| 阜新| 乐安县| 龙岩市| 昆山市| 锦州市| 水富县| 大厂| 阿拉善左旗| 安吉县| 都江堰市| 台山市| 石棉县| 靖远县| 县级市| 定边县| 玉溪市| 阿尔山市| 阿鲁科尔沁旗| 南安市| 互助| 福贡县| 兴仁县| 武威市| 嘉鱼县| 尼勒克县| 宜黄县| 驻马店市| 蒲城县| 洛隆县| 丹东市| 牟定县| 施秉县| 乃东县| 阿克| 嵩明县| 龙海市| 普安县| 青神县|