Java大數相乘(使用BigInteger和BigDecimal)
1.BigInteger和BigDecimal
在 Java 中提供了用於大數字運算的類,即 java.math.BigInteger 類和 java.math.BigDecimal 類。這兩個類用於高精度計算,其中 BigInteger 類是針對整型大數字的處理類,而 BigDecimal 類是針對大小數的處理類。
在運算中 BigInteger 型別可以準確地表示任何大小的整數值,它可以表示的範圍比integer大得多了。
BigInteger類的常用運算方法:
add(BigInteger val) 做加法運算
subtract(BigInteger val) 做減法運算
multiply(BigInteger val) 做乘法運算
divide(BigInteger val) 做除法運算
remainder(BigInteger val) 做取餘數運算
divideAndRemainder(BigInteger val) 做除法運算,返回陣列的第一個值為商,第二個值為餘數
pow(int exponent) 做引數的 exponent 次方運算
negate() 取相反數
shiftLeft(int n) 將數字左移 n 位,如果 n 為負數,則做右移操作
shiftRight(int n) 將數字右移 n 位,如果 n 為負數,則做左移操作
and(BigInteger val) 做與運算
or(BigInteger val) 做或運算
compareTo(BigInteger val) 做數字的比較運算
equals(Object obj) 當引數 obj 是 Biglnteger 型別的數字並且數值相等時返回 true, 其他返回 false
min(BigInteger val) 返回較小的數值
max(BigInteger val) 返回較大的數值
BigDecimal類可以精確的進行計算,在計算中由於浮點數float和double本身儲存的關係不能做到完全的準確,因此在商業應用中BigDecimal可以提供精確得到小數計算。
資料:Java BigDecimal詳解
2.大數相乘的題
import java.math.BigInteger;
import java.util.*;
class Main{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
BigInteger a =input.nextBigInteger();
BigInteger b =input.nextBigInteger();
long c = input.nextLong();
BigInteger fin = a.multiply(b);
BigInteger ten = new BigInteger("10");
BigInteger zero = new BigInteger("0");
int count = 0;
while(fin.remainder(ten).equals(zero)) {
count++;
fin = fin.divide(ten);
}
if(count==c) {
System.out.println("Well done!");
}else {
System.out.println("Doubt!");
}
}
}
相關文章
- java基礎學習之十一:BigDecimal和BigIntegerJavaDecimal
- java學習之BigInteger類、BigDecimal類JavaDecimal
- 大數相乘解決方案
- (陣列)大數相乘,相加陣列
- 大數相乘(浮點數)實現
- 【java】Maths類、Random類、System類、BigInteger類、BigDecimal類、Date類、SimpleDateFormat類JavarandomDecimalORM
- java保留2位小數及BigDecimal使用JavaDecimal
- 包裝類型別,跳脫字元,BigDecimal,BigInteger,Ca型別字元Decimal
- Java BigDecimal使用指南JavaDecimal
- C# 4.0 大數的運算,BigIntegerC#
- C++ 大整數類(BigInteger類)實現C++
- leetcode:字串相乘(java)LeetCode字串Java
- java中的BigDecimalJavaDecimal
- BigInteger
- (Java筆記)BigDecimal類Java筆記Decimal
- Java之BigDecimal詳解JavaDecimal
- java.math.BigDecimal用法JavaDecimal
- Java之BigInteger(能夠存取比Long更大的整數,可以任意大小)Java
- Java的BigDecimal比較大小JavaDecimal
- Java 中比較 BigDecimal 的陷阱JavaDecimal
- java BigInteger 對許可權進行2的權的和計算Java
- BigDecimal使用注意的地方Decimal
- Java浮點數float,bigdecimal和double精確計算的精度誤差問題總結JavaDecimal
- 字串相乘字串
- [work] python list中數字與一個數相乘Python
- 十字相乘與雙十字相乘
- Java中BigDecimal的使用(1.01+2.02=3.0300000000000002)JavaDecimal
- 矩陣相乘矩陣
- 常見物件-BigInteger物件
- Java深海拾遺系列(5)--- 精度計算中的BigDecimal,double和floatJavaDecimal
- BigDecimalDecimal
- org.apache.jasper.JasperException: java.math.BigDecimalApacheExceptionJavaDecimal
- 兩位數相乘的速演算法靠譜嗎?演算法
- hutool jsonutil BigDecimal 保留小數點處理JSONDecimal
- Java之BigDecimal(存任意精度的浮點型)JavaDecimal
- 工作學習筆記(十)Java 中 “<” 運算子不能應用於BigDecimal和double筆記JavaDecimal
- 淺談 BigInteger.Sqrt 方法
- Java 浮點數精確性探討(IEEE754 / double / float)與 BigDecimal 解決方案JavaDecimal