import java.math.BigDecimal; 

import java.text.DecimalFormat;

public class TestGetInt{ 

public static void main(String[] args){ 

   double i=2, j=2.1, k=2.5, m=2.9; 

   System.out.println("舍掉小数取整:Math.floor(2)=" + (int)Math.floor(i)); 

   System.out.println("舍掉小数取整:Math.floor(2.1)=" + (int)Math.floor(j)); 

   System.out.println("舍掉小数取整:Math.floor(2.5)=" + (int)Math.floor(k)); 

   System.out.println("舍掉小数取整:Math.floor(2.9)=" + (int)Math.floor(m)); 

                                        

   /* 这段被注释的代码不能正确的实现四舍五入取整 

   System.out.println("四舍五入取整:Math.rint(2)=" + (int)Math.rint(i)); 

   System.out.println("四舍五入取整:Math.rint(2.1)=" + (int)Math.rint(j)); 

   System.out.println("四舍五入取整:Math.rint(2.5)=" + (int)Math.rint(k)); 

   System.out.println("四舍五入取整:Math.rint(2.9)=" + (int)Math.rint(m)); 

   

   System.out.println("四舍五入取整:(2)=" + new DecimalFormat("0").format(i)); 

   System.out.println("四舍五入取整:(2.1)=" + new DecimalFormat("0").format(i)); 

   System.out.println("四舍五入取整:(2.5)=" + new DecimalFormat("0").format(i)); 

   System.out.println("四舍五入取整:(2.9)=" + new DecimalFormat("0").format(i)); 

   */ 

   

   System.out.println("四舍五入取整:(2)=" + new BigDecimal("2").setScale(0, BigDecimal.ROUND_HALF_UP)); 

   System.out.println("四舍五入取整:(2.1)=" + new BigDecimal("2.1").setScale(0, BigDecimal.ROUND_HALF_UP)); 

   System.out.println("四舍五入取整:(2.5)=" + new BigDecimal("2.5").setScale(0, BigDecimal.ROUND_HALF_UP)); 

   System.out.println("四舍五入取整:(2.9)=" + new BigDecimal("2.9").setScale(0, BigDecimal.ROUND_HALF_UP));

System.out.println("凑整:Math.ceil(2)=" + (int)Math.ceil(i)); 

   System.out.println("凑整:Math.ceil(2.1)=" + (int)Math.ceil(j)); 

   System.out.println("凑整:Math.ceil(2.5)=" + (int)Math.ceil(k)); 

   System.out.println("凑整:Math.ceil(2.9)=" + (int)Math.ceil(m));

System.out.println("舍掉小数取整:Math.floor(-2)=" + (int)Math.floor(-i)); 

   System.out.println("舍掉小数取整:Math.floor(-2.1)=" + (int)Math.floor(-j)); 

   System.out.println("舍掉小数取整:Math.floor(-2.5)=" + (int)Math.floor(-k)); 

   System.out.println("舍掉小数取整:Math.floor(-2.9)=" + (int)Math.floor(-m)); 

   

   System.out.println("四舍五入取整:(-2)=" + new BigDecimal("-2").setScale(0, BigDecimal.ROUND_HALF_UP)); 

   System.out.println("四舍五入取整:(-2.1)=" + new BigDecimal("-2.1").setScale(0, BigDecimal.ROUND_HALF_UP)); 

   System.out.println("四舍五入取整:(-2.5)=" + new BigDecimal("-2.5").setScale(0, BigDecimal.ROUND_HALF_UP)); 

   System.out.println("四舍五入取整:(-2.9)=" + new BigDecimal("-2.9").setScale(0, BigDecimal.ROUND_HALF_UP));

System.out.println("凑整:Math.ceil(-2)=" + (int)Math.ceil(-i)); 

   System.out.println("凑整:Math.ceil(-2.1)=" + (int)Math.ceil(-j)); 

   System.out.println("凑整:Math.ceil(-2.5)=" + (int)Math.ceil(-k)); 

   System.out.println("凑整:Math.ceil(-2.9)=" + (int)Math.ceil(-m)); 

   } 

}

//_____________________________

舍掉小?取整:Math.floor(2)=2

舍掉小?取整:Math.floor(2.1)=2

舍掉小?取整:Math.floor(2.5)=2

舍掉小?取整:Math.floor(2.9)=2

四舍五入取整:(2)=2

四舍五入取整:(2.1)=2

四舍五入取整:(2.5)=3

四舍五入取整:(2.9)=3

?整:Math.ceil(2)=2

?整:Math.ceil(2.1)=3

?整:Math.ceil(2.5)=3

?整:Math.ceil(2.9)=3

舍掉小?取整:Math.floor(-2)=-2

舍掉小?取整:Math.floor(-2.1)=-3

舍掉小?取整:Math.floor(-2.5)=-3

舍掉小?取整:Math.floor(-2.9)=-3

四舍五入取整:(-2)=-2

四舍五入取整:(-2.1)=-2

四舍五入取整:(-2.5)=-3

四舍五入取整:(-2.9)=-3

?整:Math.ceil(-2)=-2

?整:Math.ceil(-2.1)=-2

?整:Math.ceil(-2.5)=-2

?整:Math.ceil(-2.9)=-2

===================================================

BigDecimal b = new BigDecimal(9.655 );

        //double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

        double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

System.out.println("f1=" + f1);//f1=9.65

        BigDecimal mData = new BigDecimal("9.655").setScale(2, BigDecimal.ROUND_HALF_UP);

        System.out.println("mData=" + mData);//mData=9.66

public BigDecimal(double val)
将 double 转换为 BigDecimal,后者是 double 的二进制浮点值准确的十进制表示形式。返回的 BigDecimal 的标度是使 (10scale ×
val)
为整数的最小值。

注:

  1. 此构造方法的结果有一定的不可预知性。有人可能认为在 Java 中写入 new BigDecimal(0.1) 所创建的 BigDecimal 正好等于 0.1(非标度值 1,其标度为 1),但是它实际上等于 0.1000000000000000055511151231257827021181583404541015625。这是因为
    0.1 无法准确地表示为 double(或者说对于该情况,不能表示为任何有限长度的二进制小数)。这样,传入到构造方法的值不会正好等于 0.1(虽然表面上等于该值)。
  2. 另一方面,String 构造方法是完全可预知的:写入 new BigDecimal("0.1") 将创建一个 BigDecimal,它正好 等于预期的
    0.1。因此,比较而言,通常建议优先使用 String 构造方法
  3. 当 double 必须用作 BigDecimal 的源时,请注意,此构造方法提供了一个准确转换;它不提供与以下操作相同的结果:先使用 Double.toString(double) 方法,然后使用 BigDecimal(String) 构造方法,将 double 转换为 String。要获取该结果,请使用 static valueOf(double) 方法。

Java中取整和四舍五入的更多相关文章

  1. sql 中取整,四舍五入取整,向下取整,向上取整。

    SELECT round(52.45, 0) AS round4, round(52.54, 0) AS round5, round(52.45, 1) AS round41, round(52.54 ...

  2. JAVA取整以及四舍五入

    JAVA取整以及四舍五入 import java.math.BigDecimal; //引入这个包 public class Test { public static void main(String ...

  3. Java中取小数点后两位(四种方法)

    摘自http://irobot.iteye.com/blog/285537 Java中取小数点后两位(四种方法)   一 Long是长整型,怎么有小数,是double吧     java.text.D ...

  4. AVA取整以及四舍五入

    AVA取整以及四舍五入 import java.math.BigDecimal; public class Test { public static void main(String[] args) ...

  5. js 向上取整、向下取整、四舍五入

      js 向上取整.向下取整.四舍五入 CreateTime--2018年4月14日11:31:21 Author:Marydon // 1.只保留整数部分(丢弃小数部分) parseInt(5.12 ...

  6. js取整、四舍五入等数学函数

    js只保留整数,向上取整,四舍五入,向下取整等函数1.丢弃小数部分,保留整数部分parseInt(5/2) 2.向上取整,有小数就整数部分加1 Math.ceil(5/2) 3,四舍五入. Math. ...

  7. Oracle的取整和四舍五入函数——floor,round,ceil,trunc使用说明

    Oracle的取整和四舍五入函数——floor,round,ceil,trunc使用说明 FLOOR——对给定的数字取整数位SQL> select floor(2345.67) from dua ...

  8. 问题:oracle floor;结果:Oracle的取整和四舍五入函数——floor,round,ceil,trunc使用说明

    Oracle的取整和四舍五入函数——floor,round,ceil,trunc使用说明 (2011-04-06 16:10:35) 转载▼ 标签: 谈 分类: 渐行渐远 FLOOR——对给定的数字取 ...

  9. python 向下取整,向上取整,四舍五入

    # python 向下取整 floor 向上取整ceil 四舍五入 round import math num=3.1415926 # 向上取整 print(math.ceil(num)) # 向下取 ...

随机推荐

  1. Web开发相关笔记 #01#

    前端学习纲要 ※jQuery 参考 ※ 整理 Chrome 收藏夹的小技巧 ※ 解决 AJAX 跨域获取 cookie ※ 记一次 MyBatis 相关的 debug [1] 前端学习纲要: ♦ 第一 ...

  2. MySQL5.7导入数据报错ERROR 1067 (42000) at line 1015: Invalid default value for 'service_time'

    解决办法: 修改my.cnf,[mysqld] 下面添加sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_U ...

  3. UIScrollView监听静止的数种情况

    1.直接通过block -(void)testInBlock { //通过block监听 [UIView animateWithDuration:1.0 animations:^{ self.scro ...

  4. mysql分库分表(一)

    mysql分库分表 参考: https://blog.csdn.net/xlgen157387/article/details/53976153 https://blog.csdn.net/cleve ...

  5. What's the difference between UTF-8 and UTF-8 without BOM?

    https://stackoverflow.com/questions/2223882/whats-the-difference-between-utf-8-and-utf-8-without-bom ...

  6. 为什么Kubernetes不使用libnetwork

    Kubernetes 在 1.0 版本之前就已经有了最初的网络插件.与此同时 Docker 也引入了 libnetwork 和 Container Network Model (CNM).现在 Doc ...

  7. 如何让pycharm以py.test方式运行

    第一步:进入File—Settings—Python Integrated Tools 发现设置中Default test runner是Unittests 将其改为py.test,点击OK保存 如果 ...

  8. LightOJ - 1341唯一分解定理

    唯一分解定理 先分解面积,然后除2,再减去面积%长度==0的情况,注意毯子不能是正方形 #include<map> #include<set> #include<cmat ...

  9. poj3683 2 -sat输出路径

    tarjan缩点,拓扑排序染色输出(貌似挑战上面没有拓扑啊,而且这样写还过了= =) 主要是找s,t,d,三者之间的关系,找出合取范式这题就很容易了 #include<map> #incl ...

  10. Flexible实现H5页面的rem布局适配

    1.https://www.w3cplus.com/mobile/lib-flexible-for-html5-layout.html (使用Flexible实现手淘H5页面的终端适配) 2.http ...