AI-摘要
切换
Joker GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
跟随狂神学Java-18,String类
Joker2Yue第十八天:BigDecimal
哪一场战不难打,越难打,越要打
学习内容
引入
-
思考:以下程序的输出结果是多少
1
2
3
4
5
6
7
8
9package com.joker_yue.javalearn.bigDecimal;
public class BigDecimal {
public static void main(String[] args) {
double d1= 1.0;
double d2= 0.9;
System.out.println(d1-d2);
}
} -
上述结果为
1
0.09999999999999998
-
我们再来试试这个
1
2
3
4
5
6
7
8
9
10
11
12
13package com.joker_yue.javalearn.bigDecimal;
public class BigDecimal {
public static void main(String[] args) {
double d1= 1.0;
double d2= 0.9;
System.out.println(d1-d2);
double result = (1.4-0.5)/0.9;
System.out.println(result);
}
} -
输出结果为
1
20.09999999999999998
0.9999999999999999 -
原因是浮点类型的精度丢失。所以我们需要一个进度更高的类
BigDecimal
-
位置:java.math包
-
作用:精确计算浮点数
-
创建方式:BigDecimal bd = new BigDecimal(“1.0”);
1 | package com.joker_yue.javalearn.bigDecimal; |
上述代码的输出结果为
1 | 0.1 |
但是我们这样写
1 | BigDecimal r5 = new BigDecimal("10").divide(new BigDecimal("3")); |
将会报错:
1 | Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. |
因为这个是除不尽的。所以我们需要说明保留几位小数
1 | BigDecimal r5 = new BigDecimal("10").divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP); |
最后的输出结果为
1 | 3.33 |
总结
-
方法
- BigDecimal add(BigDecimal bd) 加
- BigDecimal substract(BigDecimal bd) 减
- BigDecimal multiply(BigDecimal bd) 乘
- BigDecimal divide(BigDecimal bd) 除
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果