hdu 1753 Java 高精度處理 大明A+B

YX_blog發表於2015-08-18

大明A+B

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 10355    Accepted Submission(s): 3711


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
思路:這題用C寫可能要考慮很多細節,比如考慮小數點的位置,還有位數不一樣要用0 補齊等
但是用JAva寫只需要用 BigDecimal 就可實現對大數的處理
package cn.hncu.acm;
import java.math.BigDecimal;
import java.util.Scanner;
public class p1753 {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		while(sc.hasNext()){
			BigDecimal a=sc.nextBigDecimal();//因為為高精度小數處理,需要用到BigDecimal
			BigDecimal b =sc.nextBigDecimal();
			BigDecimal c=a.add(b);//二者加起來
			System.out.println(c.stripTrailingZeros().toPlainString());//返回不帶指數字段的此 BigDecimal 的字串表示形式。
//			System.out.println(c.stripTrailingZeros().toString());//輸出的格式不對 String toString() 
//	          返回此 BigDecimal 的字串表示形式,如果需要指數,則使用科學記數法 
//			System.out.println(c);//輸入 1.0和2.0的時候結果會保留一位小數  3.0
		}
	}

}






相關文章