Java BigDecimal 不用科学计数法输出,去前导零 51Nod 1873

来源:互联网 发布:赣州淘宝培训 编辑:程序博客网 时间:2024/05/10 08:40

Java高精度确实A题利器,但是也需要掌握一定的技巧,尤其控制精度方面,由于大浮点数精度太高就默认用科学计数法表示,这里我们可以略施小计让其不用科学计数法表示并且去掉前导“0.”


stripTrailingZeros() :用于去除末尾多余的0

toPlainString(): 控制不使用科学计数法输出

去掉前导“0.”就相对简单多了,只需要先将高精度浮点数转化为字符串再判断字符串开头即可。


import java.io.BufferedInputStream;import java.math.BigDecimal;import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner cin = new Scanner(new BufferedInputStream(System.in));        BigDecimal a;        int b;        while(cin.hasNext()) {            a = cin.nextBigDecimal();            b = cin.nextInt();            BigDecimal ans = BigDecimal.ONE;            while(b != 0) {                if(b % 2 == 1) {                    ans = ans.multiply(a);                }                a = a.multiply(a);                b >>= 1;            }            String str = ans.stripTrailingZeros().toPlainString();            if(str.startsWith("0.")) {                str = str.substring(1, str.length());            }            System.out.println(str);        }    }}


原创粉丝点击