您的位置:首页 > 编程语言 > Java开发

大数问题——Java中的BigDecimal类

2017-04-10 09:41 176 查看
大数问题——Java中的BigDecimal类

import java.util.*;
import java.math.*;

public class Test {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);

//BigDecimal类型的常量
BigDecimal A = BigDecimal.ONE;
System.out.println("BigDecimal.ONE的结果为 " + A);//1
BigDecimal B = BigDecimal.TEN;
System.out.println("BigDecimal.TEN的结果为 " + B);//10
BigDecimal C = BigDecimal.ZERO;
System.out.println("BigDecimal.ZERO的结果为 " + C);//0

//初始化
BigDecimal c = new BigDecimal("89.1234567890123456789");
BigDecimal d = new BigDecimal(100);
BigDecimal e = new BigDecimal(new char[]{'2','1','.','2'});
System.out.println(e);//21.2

//运算
System.out.println("请输入大整数a,b");
while (cin.hasNext()) {//等同于!=EOF
BigDecimal a = cin.nextBigDecimal();
BigDecimal b = cin.nextBigDecimal();
BigDecimal c1 = a.add(b); // 大数加法
System.out.println("加的结果为 " + c1);
BigDecimal c2 = a.subtract(b); // 大数减法
System.out.println("减的结果为 " + c2);
BigDecimal c3 = a.multiply(b); // 大数乘法
System.out.println("乘的结果为 " + c3);

//注意,这里如果不能除尽,就会抛出一个ArithmeticException错误
BigDecimal c4 = a.divide(b); // 大数除法
System.out.println("除的结果为 " + c4);

BigDecimal cc5 = a.remainder(b);
System.out.println("余的结果为 " + cc5);
BigDecimal c6 = a.max(b);// 取最大
System.out.println("最大为 " + c6);
BigDecimal c7 = a.min(b); // 取最小
System.out.println("最小为 " + c7);
BigDecimal c8 = a.pow(10); //指数运算
System.out.println("指数运算结果为" + c8);
if (a.equals(b)) // 判断是否相等
System.out.println("相等");
else
System.out.println("不相等");
BigDecimal c10 = a.abs(); // 求绝对值
System.out.println("a的绝对值为 " + c10);
BigDecimal c11 = a.negate(); // 求相反数
System.out.println("a的相反数为 " + c11);
//去后缀0

//格式问题
BigDecimal bd = new BigDecimal("12000.87300");
bd = bd.stripTrailingZeros();
System.out.println(bd);   //12000.873
bd = new BigDecimal("1.2E-3");
//  bd = new BigDecimal("1.2E+3");
//去科学记数
if(bd.scale()<0){
bd = bd.setScale(0);
}
System.out.println(bd);    //0.0012
//保留N位小数.  N=5:
bd = new BigDecimal("12000.873000");
bd = bd.setScale(5, BigDecimal.ROUND_HALF_UP);
System.out.println(bd);         //12000.87300
}
}
}

123.45000变为123.45可用BigDecimal类下的stripTrailingZeros()方法。另外,如果输出的结果为科学计数法,可用toPlainString()方法改为普通的数字表示。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: