微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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;
 }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐