跟随狂神学Java-18,String类
AI-摘要
切换
Tianli GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
跟随狂神学Java-18,String类
joker2yue跟随狂神学Java
作者:joker2yue
链接:https://github.com/Joker2Yue/Joker2Yue-Blog
来源:Github
著作权归原作者所有。商业转载请联系原作者获得授权,非商业转载请注明出处。
第十八天: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) 除
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果