NYOJ-A+B-513(大数)

A+B Problem IV

时间限制: 1000  ms  |  内存限制: 65535  KB
难度: 3
描述
acmj最近发现在使用计算器计算高精度的大数加法时很不方便,于是他想着能不能写个程序把这个问题给解决了。
输入
包含多组测试数据
每组数据包含两个正数A,B(可能为小数且位数不大于400)
输出
每组输出数据占一行,输出A+B的结果,结果需要是最简的形式。
样例输入
1.9 0.1
0.1 0.9
1.23 2.1
3 4.0
样例输出
2
1
3.33
7
来源
hdu
上传者
路过这


java写大数太简单了,不过要注意输出哈!


import java.util.*;
import java.math.*;
public class Main {
    public static void main(String[] argc){
        Scanner cin=new Scanner(System.in);
        BigDecimal a,b,ans;
        while(cin.hasNext())
        {
            a=cin.nextBigDecimal();
            b=cin.nextBigDecimal();
            ans=a.add(b);
            if (ans.compareTo(BigDecimal.ZERO)==0) 
                System.out.println("0");
            else 
                System.out.println(ans.stripTrailingZeros().toPlainString());
        }                
    }            
}     


import java.math.BigDecimal;
import java.util.Scanner;

public class A_B {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		
		 while(scan.hasNext()){
			/*String str1 = scan.next();
			String str2 = scan.next();
			boolean flag1=false;
			boolean flag2=false;
			int str11,str22;
			for(i=0,j=0;i<str1.length()||j<str2.length();i++,j++){
				if(str1.charAt(i)=='.'){
					flag1=true;
					str11=i;
				}
				else{
					if(!flag1){
						str1=str1+".0";
					}
				}
				if(str2.charAt(j)=='.'){
					flag2=true;
					str22=j;
				}else{
					if(!flag2){
						str2=str2 + ".0";
					}
				}
			}
			for(){
				
			}*/
			 BigDecimal a = scan.nextBigDecimal();
			 BigDecimal b = scan.nextBigDecimal();
			 BigDecimal sum=a.add(b);
			 String SUM = ZH(sum.toString());
		   
			System.out .println(SUM);
			 
		 }
		
		
	}

	private static String ZH(String sum) {
		  int num=-1;
		  if(sum.indexOf('.')!=-1){// 如果发现
			  for(int i =sum.length()-1;i>0;i--){//indexof(),搜索不到时返回-1
				  if(sum.charAt(i)!='0'){
					  num=i+1;
					  break;
				  }
			  }
			  sum=sum.substring(0, num);
			  if(sum.endsWith(".")){//去’0‘后的‘.’也要去掉!
				  sum=sum.substring(0, sum.length()-1);
			  }
		  }
		
		return sum;
	}

}


 


 

import java.math.BigDecimal;
import java.util.Scanner;

public class A_B{
 public static void main(String[] args) {
   Scanner scan= new Scanner(System.in);
   
   while(scan.hasNext()){
    BigDecimal a = scan.nextBigDecimal();
    BigDecimal b = scan.nextBigDecimal();
    BigDecimal sum=a.add(b);
    String SUM=ZH(sum.toString());
    System.out.println(SUM);
    
    
    
   }
   
 }

 private static String ZH(String sum) {
  // TODO Auto-generated method stub
  int num =0;
  if(sum.indexOf('.')!=-1){
    for(int i=sum.length()-1;i>0;i--)//不以i>=0结束!,至少得有个数吧
    {
     if(sum.charAt(i)!='0'){
      num=i;
      break;
     }
    }
    sum=sum.substring(0, num+1);//substring截取问题,需要num+1
    
    if(sum.endsWith(".")){//sum.endsWith,boolen类型
     
     sum=sum.substring(0, sum.length()-1);
    }
  }
  return sum;
 }
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值