Hdu1753 大明A+B

大明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的值。

Input
本題目包含多組測試數據,請處理到文件結束。
每一組測試數據在一行裏面包含兩個長度不大於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()方法。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章