北京裝飾公司一覽表網(wǎng)站搜索排名優(yōu)化軟件
在 Java 中提供了用于大數(shù)字運(yùn)算的類,即 java.math.BigInteger 類和 java.math.BigDecimal 類。這兩個類用于高精度計算,其中 BigInteger 類是針對整型大數(shù)字的處理類,而 BigDecimal 類是針對大小數(shù)的處理類。今天主要講一下 BigDecimal 類
BigDecimal 類
????????BigInteger 和 BigDecimal 都能實現(xiàn)大數(shù)字的運(yùn)算,不同的是 BigDecimal 加入了小數(shù)的概念。一般的 float 和 double 類型數(shù)據(jù)只能用來做科學(xué)計算或工程計算,但由于在商業(yè)計算中要求數(shù)字精度比較高,所以要用到 BigDecimal 類。BigDecimal 類支持任何精度的浮點數(shù),可以用來精確計算貨幣值。
BigDecimal 常用的構(gòu)造方法如下。
BigDecimal(double val):實例化時將雙精度型轉(zhuǎn)換為 BigDecimal 類型。
BigDecimal(String val):實例化時將字符串形式轉(zhuǎn)換為 BigDecimal 類型。
????????BigDecimal 類的方法可以用來做超大浮點數(shù)的運(yùn)算,像加、減、乘和除等。在所有運(yùn)算中,除法運(yùn)算是最復(fù)雜的,因為在除不盡的情況下,末位小數(shù)的處理方式是需要考慮的。
????????下面列出了 BigDecimal 類用于實現(xiàn)加、減、乘和除運(yùn)算的方法。
BigDecimal add(BigDecimal augend) // 加法操作
BigDecimal subtract(BigDecimal subtrahend) // 減法操作
BigDecimal multiply(BigDecimal multiplieand) // 乘法操作
BigDecimal divide(BigDecimal divisor,int scale,int roundingMode ) // 除法操作
????????其中,divide() 方法的 3 個參數(shù)分別表示除數(shù)、商的小數(shù)點后的位數(shù)和近似值處理模式。
????????下表列出了 roundingMode 參數(shù)支持的處理模式。
例:
????????編寫一個 Java 程序,演示如何使用 BigDecimal 類提供的方法對數(shù)字執(zhí)行運(yùn)算,并輸出結(jié)果。具體實現(xiàn)代碼如下:
import java.math.BigDecimal;
import java.util.Scanner;
public class Test10 {
? ? public static void main(String[] args) {
? ? ? ? Scanner input = new Scanner(System.in);
? ? ? ? System.out.println("請輸入一個數(shù)字:");
? ? ? ? // 保存用戶輸入的數(shù)字
? ? ? ? double num = input.nextDouble();
? ? ? ? // 使用輸入的數(shù)字創(chuàng)建 BigDecimal 對象
? ? ? ? BigDecimal bd = new BigDecimal(num);
? ? ? ? // 計算大數(shù)字加上 99.154 的結(jié)果
? ? ? ? System.out.println("加法操作結(jié)果:" + bd.add(new BigDecimal(99.154)));
? ? ? ? // 計算大數(shù)字減去-25.157904 的結(jié)果
? ? ? ? System.out.println("減法操作結(jié)果:" + bd.subtract(new BigDecimal(-25.157904)));
? ? ? ? // 計算大數(shù)字乘以 3.5 的結(jié)果
? ? ? ? System.out.println("乘法操作結(jié)果:" + bd.multiply(new BigDecimal(3.5)));
? ? ? ? // 計算大數(shù)字除以 3.14 的結(jié)果,并保留小數(shù)后 2 位
? ? ? ? System.out.println("除法操作結(jié)果(保留 2 位小數(shù)):" + bd.divide(new BigDecimal(3.14), 2, BigDecimal.ROUND_CEILING));
? ? ? ? // 計算大數(shù)字除以 3.14 的結(jié)果,并保留小數(shù)后 5 位
? ? ? ? System.out.println("除法操作結(jié)果(保留 5 位小數(shù)):" + bd.divide(new BigDecimal(3.14), 5, BigDecimal.ROUND_CEILING));
? ? }
}
????????上述代碼將用戶輸入的數(shù)字保存到 num 變量中,然后調(diào)用“newBigDecimal(num)”方法來創(chuàng)建 BigDecimal 對象。接下來的代碼演示了如何調(diào)用 BigDecimal 類提供的運(yùn)算方法,運(yùn)行效果如下所示。
請輸入一個數(shù)字:
100
加法操作結(jié)果:199.15399999999999636202119290828704833984375
減法操作結(jié)果:125.157903999999998490011421381495893001556396484375
乘法操作結(jié)果:350.0
除法操作結(jié)果(保留 2 位小數(shù)):31.85
除法操作結(jié)果(保留 5 位小數(shù)):31.84714
?