从“追求尽量不出错”,到正视“出错是必然”的|

如此而已~~~

园龄:3年3个月粉丝:0关注:12

37_Java中的浮点数精确运算

java中的BigDemcimal

用于小数的精确运算

构造方法:

​ BigDecimal(String val)

四则运算:

​ add(BigDecimal b):加法

​ subtract(BigDecimal b):减法

​ multiply(BigDecimal b):乘法

​ divide(BigDecimal b):除法

参考代码:

package com.itheima;
import java.math.BigDecimal;
/*
基本使用:用于小数的精确计算
*/
public class BigDecimalDemo01 {
public static void main(String[] args) {
//double、float只是用于科学计算,但是不够精确
System.out.println(0.1 + 0.2); //0.3
System.out.println(0.1 - 0.2); //-0.1
System.out.println(0.1 * 0.2); //0.02
System.out.println(0.1 / 0.2); //0.5
System.out.println("----------");
//使用BigDecimal类解决
BigDecimal bd1 = new BigDecimal("0.1");
BigDecimal bd2 = new BigDecimal("0.2");
System.out.println(bd1.add(bd2));
System.out.println(bd1.subtract(bd2));
System.out.println(bd1.multiply(bd2));
System.out.println(bd1.divide(bd2));
}
}

除法运算遇到除不尽时:

​ public BigDecimal divide(另一个BigDecimal对象,精确几位,舍人模式)

​ RoundingMode.UP:进一法

​ RoundingMode.FLOOR:去尾法

​ ROundingMode.HALF_UP:四舍五入

参考代码:

package com.itheima;
import java.math.BigDecimal;
import java.math.RoundingMode;
/*
除法运算:
public BigDecimal divide(另一个BigDecimal对象,精确几位,舍人模式)
RoundingMode.UP:进一法
RoundingMode.FLOOR:去尾法
RoundingMode.HALF_UP:四舍五入
*/
public class BigDecimalDemo02 {
public static void main(String[] args) {
//使用BigDecimal类解决
BigDecimal bd1 = new BigDecimal("10.0");
BigDecimal bd2 = new BigDecimal("3.0");
// System.out.println(bd1.divide(bd2)); //除不尽
/*
参数1:表示参与计算的BigDecimal对象
参数2:表示小数点后面精确多少位
参数3:舍入模式
*/
System.out.println(bd1.divide(bd2, 2, RoundingMode.UP));
System.out.println(bd1.divide(bd2, 2, RoundingMode.FLOOR));
System.out.println(bd1.divide(bd2, 2, RoundingMode.HALF_UP));
}
}

本文作者:如此而已~~~

本文链接:https://www.cnblogs.com/fragmentary/p/17032194.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   如此而已~~~  阅读(98)  评论(0编辑  收藏  举报
//雪花飘落效果
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起