大数问题——Java中的BigDecimal类
2017-04-10 09:41
176 查看
大数问题——Java中的BigDecimal类
123.45000变为123.45可用BigDecimal类下的stripTrailingZeros()方法。另外,如果输出的结果为科学计数法,可用toPlainString()方法改为普通的数字表示。
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()方法改为普通的数字表示。
相关文章推荐
- java.math.BigDecimal类的用法 解决double计算精度问题
- java.math.BigDecimal类的用法 解决double计算精度问题
- java中计算精度问题的解决--BigDecimal类的使用
- Java网络编程,有助于解决实际问题,
- JAVA与C++::关于JNI中文字符串操作问题总结
- Java程序的脏数据问题
- Java , Installanywhere 在 Redhat 上的中文问题解决方法
- JAVA中文比较问题的分析和解决
- Java 编程技术中汉字问题的分析及解决
- Java初学者容易混淆的几个问题
- Java多语言编码问题解析(2)
- 在JAVA开发中的中文处理问题及解决办法
- 今天的问题:一个简单的例子,请帮我解开“接口实现Java‘隐藏实现细目’”的迷惑。
- Java 编程技术中汉字问题的一些url收藏
- Java常见问题集锦(来自Sun中国官方站)
- 应聘Java,jsp,j2ee软件工程师笔试中可能出现的问题
- java中有关日期的显示问题
- 基于java时区转换夏令时的问题及解决方法
- Java的GregorianCalendar类和相关的历法问题
- Java 编程技术中汉字问题的分析及解决