您现在的位置是:首页 > 数码 > 

保留2位不四舍五入

2025-07-17 17:33:18
保留2位不四舍五入 今天在工作中遇到了这样的一个需求, 一个小数,例如1.,或者1.,不管后面的位数是多少,只保留到小数点后第二位,但是不是四舍五入,1.处理后就是1.77,1.处理后就是1. 这个就要用到BigDecim

保留2位不四舍五入

今天在工作中遇到了这样的一个需求,

一个小数,例如1.7777777,或者1.,不管后面的位数是多少,只保留到小数点后第二位,但是不是四舍五入,1.7777777处理后就是1.77,1.处理后就是1.

这个就要用到BigDecimal#setScale的方法了。

具体看如下代码:

?View Code JAVA

1
2

4
5
6
7
8
9
10
11
12
1
14
15
16
17
18
19
20
21
22
2
24
25
26
27
28
29
 
  1. import BigDecimal;

  2. import RoundingMode;

  3.  

  4. public class ScaleTest {

  5.  

  6. public static void main(String[] args) {

  7.  

  8. double a = 1.66728D;

  9. double b = 1.D;

  10. double c = 1.00000D;

  11.  

  12. BigDecimal aa = new BigDecimal(a);

  13. BigDecimal bb = new BigDecimal(b);

  14. BigDecimal cc = new BigDecimal(c);

  15. println(aa.setScale(2, BigDecimal.ROUD_UP));

  16. println(aa.setScale(2, BigDecimal.ROUD_DOW));

  17. println(bb.setScale(2, BigDecimal.ROUD_UP));

  18. println(bb.setScale(2, BigDecimal.ROUD_DOW));

  19. println(cc.setScale(2, BigDecimal.ROUD_UP));

  20. println(cc.setScale(2, BigDecimal.ROUD_DOW));

  21. println(-------------------------------------);

  22. println(aa.setScale(2, RoundingMode.UP));

  23. println(aa.setScale(2, RoundingMode.DOW));

  24. println(bb.setScale(2, RoundingMode.UP));

  25. println(bb.setScale(2, RoundingMode.DOW));

  26. println(cc.setScale(2, RoundingMode.UP));

  27. println(cc.setScale(2, RoundingMode.DOW));

  28. }

  29. }

输出结果如下:
1.67
1.66
1.4
1.
1.00
1.00
————————————-
1.67
1.66
1.4
1.
1.00
1.00

上面仅仅是根据我的需要举了BigDecimal.ROUD_UP和BigDecimal.ROUD_DOW的例子,下面就用个表格来分析下。

ROUD_UP ROUD_DOW
1.66728D 1.67 1.66
1.D 1.4 1.
1.00000D 1.00 1.00

也就是说,ROUD_DOW,是一个舍位取值的概念,我保留了两位小数,我不管你后面的小数值如何,也不会四舍五入,就硬生生的给阶段,相当于什么呢,就是我从小数点后面开始取两位,两位后面的都不要了,相当于一个截取字符串的操作。

而ROUD_UP那,很宽容,很大方,我不管你第三位的小数是多少,我都给你加一最小单位(比如保留两位小数,最小单位是0.01,保留三位小数,最小单位就是0.001),当然了,你保留到最后一位的数字如果是0的话,那么就不加了。

而这两个作用在咱们实际当中什么情况下不能使用四舍五入,需要用这两个呢?

用个应用题举例子吧,

一个篮子可以装10个苹果,现在有82个苹果,需要几个篮子来装?
9个,对,这是咱们的什么结果,不正是ROUD_UP的么(只不过这道题是取小数点后0位,也就是取整的区别而已),也就很好解释为什么最小单位是0不需要再加一个最小单位了,如果我只有80个苹果,8个篮子正好装下,就不需要第九个了。

那么什么时候儿需要使用ROUD_DOW呢,再来看下面一个例子,
每个加油站相距8公里,一公里需要耗一个油,我现在车里还有90个油,请问,我最晚在第几个加油站必须得加油了?
11个,第十一个,就是在车使用88个油到达第11个加油站后需要加油,因为我还剩2个由已经撑不到第12个加油站了。这种情况,ROUD_DOW就派上用场了。

 

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/shuma/794021.html

相关标签:无
上传时间: 2024-01-09 22:29:52
留言与评论(共有 17 条评论)
本站网友 俞丹
7分钟前 发表
而这两个作用在咱们实际当中什么情况下不能使用四舍五入,需要用这两个呢? 用个应用题举例子吧, 一个篮子可以装10个苹果,现在有82个苹果,需要几个篮子来装? 9个,对,这是咱们的什么结果,不正是ROUD_UP的么(只不过这道题是取小数点后0位,也就是取整的区别而已),也就很好解释为什么最小单位是0不需要再加一个最小单位了,如果我只有80个苹果,8个篮子正好装下,就不需要第九个了
本站网友 曾振国
9分钟前 发表
RoundingMode.UP)); println(aa.setScale(2
本站网友 腋臭治疗
11分钟前 发表
 BigDecimal.ROUD_UP)); println(cc.setScale(2
本站网友 西安韦博国际英语
21分钟前 发表
 BigDecimal.ROUD_UP)); println(bb.setScale(2
本站网友 陈浩然
17分钟前 发表
RoundingMode.UP)); println(aa.setScale(2
本站网友 乐百氏纯净水
8分钟前 发表
保留2位不四舍五入 今天在工作中遇到了这样的一个需求, 一个小数,例如1.7777777,或者1.,不管后面的位数是多少,只保留到小数点后第二位,但是不是四舍五入,1.7777777处理后就是1.77,1.处理后就是1. 这个就要用到BigDecimal#setScale的方法了
本站网友 老头照片
9分钟前 发表
RoundingMode.UP)); println(cc.setScale(2
本站网友 桃仁的功效
7分钟前 发表
 BigDecimal.ROUD_DOW)); println(-------------------------------------); println(aa.setScale(2
本站网友 小儿迪巧
22分钟前 发表
RoundingMode.DOW)); println(bb.setScale(2
本站网友 华意压缩机股份有限公司
27分钟前 发表
 
本站网友 宝安房屋出租
12分钟前 发表
RoundingMode.DOW)); } } 输出结果如下: 1.67 1.66 1.4 1. 1.00 1.00 ————————————- 1.67 1.66 1.4 1. 1.00 1.00 上面仅仅是根据我的需要举了BigDecimal.ROUD_UP和BigDecimal.ROUD_DOW的例子,下面就用个表格来分析下
本站网友 苹果的营养
13分钟前 发表
那么什么时候儿需要使用ROUD_DOW呢,再来看下面一个例子, 每个加油站相距8公里,一公里需要耗一个油,我现在车里还有90个油,请问,我最晚在第几个加油站必须得加油了? 11个,第十一个,就是在车使用88个油到达第11个加油站后需要加油,因为我还剩2个由已经撑不到第12个加油站了
本站网友 太原富力现代广场
24分钟前 发表
具体看如下代码: ?View Code JAVA 1 2 4 5 6 7 8 9 10 11 12 1 14 15 16 17 18 19 20 21 22 2 24 25 26 27 28 29   import BigDecimal; import RoundingMode;   public class ScaleTest {   public static void main(String[] args) {   double a = 1.66728D; double b = 1.D; double c = 1.00000D;   BigDecimal aa = new BigDecimal(a); BigDecimal bb = new BigDecimal(b); BigDecimal cc = new BigDecimal(c); println(aa.setScale(2
本站网友 福建证监局
26分钟前 发表
 
本站网友 回龙观新龙城
27分钟前 发表
RoundingMode.DOW)); println(bb.setScale(2
本站网友 电视墙背景墙大全
10分钟前 发表
保留2位不四舍五入 今天在工作中遇到了这样的一个需求, 一个小数,例如1.7777777,或者1.,不管后面的位数是多少,只保留到小数点后第二位,但是不是四舍五入,1.7777777处理后就是1.77,1.处理后就是1. 这个就要用到BigDecimal#setScale的方法了