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);	
    	}
    }
    
  • 相关阅读:
    firstresponder 后,键盘不显示
    performSelector
    setNeedsDisplay、setNeedsLayout 区别
    Xcode 工程文件打开不出来, cannot be opened because the project file cannot be parsed.
    GCD介绍(一):基本概念和dispatch queues
    一些概念
    /mnt/sdcard /sdcard
    eclipse 导入已存在的工程文件出错
    ios 常用技巧
    ios nsstring去掉换行符
  • 原文地址:https://www.cnblogs.com/zpKang/p/12901555.html
Copyright © 2011-2022 走看看