大明A+B
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 12085 Accepted Submission(s): 4396
Problem Description
話說,經過了漫長的一個多月,小明已經成長了許多,所以他改了一個名字叫“大明”。
這時他已經不是那個只會做100以內加法的那個“小明”了,現在他甚至會任意長度的正小數的加法。
現在,給你兩個正的小數A和B,你的任務是代表大明計算出A+B的值。
這時他已經不是那個只會做100以內加法的那個“小明”了,現在他甚至會任意長度的正小數的加法。
現在,給你兩個正的小數A和B,你的任務是代表大明計算出A+B的值。
Input
本題目包含多組測試數據,請處理到文件結束。
每一組測試數據在一行裏面包含兩個長度不大於400的正小數A和B。
每一組測試數據在一行裏面包含兩個長度不大於400的正小數A和B。
Output
請在一行裏面輸出輸出A+B的值,請輸出最簡形式。詳細要求請見Sample Output。
Sample Input
1.1 2.9
1.1111111111 2.3444323343
1 1.1
Sample Output
4
3.4555434454
2.1
import java.math.BigDecimal;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
BigDecimal a = sc.nextBigDecimal();
BigDecimal b = sc.nextBigDecimal();
b = b.add(a);
System.out.println(b.stripTrailingZeros().toPlainString());
}
}
}
心得:java大數,通過這道題,明白了BigInteger方法不能處理帶小數位的大數,BigDecimal方法可以,如果要處理掉多餘項得到最簡形式,則加上stripTrailingZeros()。而此方法也只能直接顯示一定的精度,否則就會轉化E數,想要原樣輸出,必須要加上toPlainString()方法。