【字符串】科学计数法转换

原题链接http://codeforces.com/problemset/problem/697/B

把例如3.93472e8的科学技术法转换为393472000的整数输出


方法一、直接用input.nextBigDecimal()转换成大数然后.stripTrailingZeros()抹去后面保留的默认三位小数,之后再.toPlainString()去掉科学计数法。

方法二、直接用spilt分割成两个部分然后再根据数学法则慢慢处理。


代码一:

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.print(input.nextBigDecimal().stripTrailingZeros().toPlainString());
    }
}

代码二:

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

public class Main{
    static Scanner input = new Scanner(System.in);
    public static void main (String[] args){
        String str = input.next();
        String[] str2 = str.split("[e]");
        BigDecimal res = new BigDecimal(str2[0]);
        BigDecimal ten = new BigDecimal("10");
        res = res.multiply(ten.pow(Integer.valueOf(str2[1])));
        String res2 = res.toString();
        String res3 = "";
        boolean meetzero = false;
        boolean nodeadd = true;
        for(int i=0;i<=res2.length()-1;i++){
            if(!meetzero){
                if(res2.charAt(i)=='.'){
                    meetzero = true;
                }else{
                    res3 += res2.charAt(i);
                }
            }else{
                if(res2.charAt(i)!='0'){
                    if(nodeadd){nodeadd=false;res3 += ".";}
                    res3 += res2.charAt(i);//补点
                }else{
                    boolean allbackzero = true;
                    for(int j=i;j<=res2.length()-1;j++){
                        if(res2.charAt(j)!='0'){
                            if(nodeadd){nodeadd=false;res3 += ".";}
                            res3 += res2.charAt(i);//补点
                            allbackzero = false;
                            break;
                        }
                    }
                    if(allbackzero){
                        break;
                    }
                }
            }
        }
        System.out.print(res3);
    }
}

你可能感兴趣的:(【字符串】科学计数法转换)