zoukankan      html  css  js  c++  java
  • BigDecimal

    BigDecimal

    java.math.BigDecimal 为了解决java中浮点数运算不精确, 用这个类可以很好的解决

    常用构造器

    建议使用String类型构造方法, 否则使用double类型进行初始化可能还是不精确, 因为double本身就不够精确

    构造器 说明
    BigDecimal(String val) val必须是数字字符串才可以
    BigDecimal(double val) 可以传入double类型的数字进行精确运算

    常用方法

    返回值 方法 说明
    BigDecimal add(BigDecimal bd) 加法
    BigDecimal divide(BigDecimal bd) 除法
    如果出现除不尽的情况, 会抛出异常
    BigDecimal divide(BigDecimal bd, int scal, RoundingMode roundingMode) 除法
    bd表示进行运算的对象, scal保留几位小数,
    roundingMode是解决方案(例如四舍五入)
    例如: bd3 = bd1.divide(bd2, 3, BigDecimal.ROUND_HALF_UP); 保留
    3位小数并四舍五入
    BigDecimal multiply(BigDecimal bd) 乘法
    BigDecimal subtract(BigDecimal bd) 减法

    测试代码

    // 这个类用来测试 浮点数运算
    public class Test4_Double {
    	public static void main(String[] args) {
    		method();
    	}
    	
    	public static void method() {
    		// 接收用户输入的两个小数
    		System.out.print("输入第一个小数: ");
    		double a = new Scanner(System.in).nextDouble();
    		System.out.print("输入第二个小数: ");
    		double b = new Scanner(System.in).nextDouble();
    		
    		// 创建对象
    		BigDecimal bd1 = new BigDecimal(a + "");
    		BigDecimal bd2 = new BigDecimal(b + "");
    
    		// 做运算
    		BigDecimal bd3; // 定义bd3保存计算结果
    		bd3 = bd1.add(bd2);
    		System.out.println(bd3);
    		
    		bd3 = bd1.subtract(bd2);
    		System.out.println(bd3);
    		
    		bd3 = bd1.multiply(bd2);
    		System.out.println(bd3);
    		
    //		bd3 = bd1.divide(bd2); // 除不尽. 抛出异常
            // 保留3位小数并四舍五入
    		bd3 = bd1.divide(bd2, 3, BigDecimal.ROUND_HALF_UP); 
    		System.out.println(bd3);	
    	}
    }
    
  • 相关阅读:
    461. Hamming Distance
    Myeclipse中WebServlet cannot be resolved to a type报错
    注解方式配置Servlet(Servlet3.0)
    Oracle连接池操作
    最短路径算法
    编写学生类Stu
    编写程序,统计某旅馆住宿客人的总数,要求输入客人姓名,输出客人编号(按先后顺序自动生成),姓名以及总人数。
    货物管理系统
    c# 利用动态库DllImport("kernel32")读写ini文件(提供Dmo下载)
    shut
  • 原文地址:https://www.cnblogs.com/zpKang/p/12901555.html
Copyright © 2011-2022 走看看