java取整和java四舍五入方法

java取整和java四舍五入方法doublei=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

大家好,又见面了,我是你们的朋友全栈君。

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) 方法。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143540.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • winrar3.7-winrar4.0的注冊码[通俗易懂]

    winrar3.7-winrar4.0的注冊码[通俗易懂]首先新建记事本文件(txt文件),把下面红色代码复制进去,然后将文件另存为以rarreg.key为文件名称的文件(当然因为设置的不同,可能出现你保存后的文件为rarreg.key.txt没关系

    2022年7月3日
    47
  • ROS机器人里程计模型

    ROS机器人里程计模型3.5移动机器人系统模型相信大家的机器人平台STM32端底层控制和机器人urdf建模都已经顺利完成了,在正式开始ros端编写机器人启动功能包之前,我们还不得不学习一些必要的理论知识。别担心数学不好,这里基本都是高中数学。下面我们开始,Areyouready?没准备好也开始了。3.5.1常用坐标系系统模型在移动机器人技术研究中,最为常用的坐标系统是笛卡尔坐标系统。而在SLAM算法研究中,有如下几个比较常见的笛卡尔坐标系统,它们分别为机器人坐标系XRYROR、传感器坐标系XSYSOS

    2022年6月30日
    29
  • pycharm opencv安装_pycharm自带python

    pycharm opencv安装_pycharm自带python一、介绍下我的环境:1、win102、python3.53、pycharm3.6二、安装要在pycharm中安装cv2模块,但是没安装openCV前安装失败(安装模块方法:pycharm导入模块)1、openCV库下载:https://www.lfd.uci.edu/~gohlke/pythonlibs/Ctrl+F输入opencv,下载对应版本opencv…

    2022年8月27日
    5
  • MySQL主从+Atlas 实现读写分离

    MySQL主从+Atlas 实现读写分离

    2021年6月4日
    97
  • 闫学灿acwing_用标号法求网络最大流

    闫学灿acwing_用标号法求网络最大流给定一个包含 n 个点 m 条边的有向图,并给定每条边的容量,边的容量非负。图中可能存在重边和自环。求从点 S 到点 T 的最大流。输入格式第一行包含四个整数 n,m,S,T。接下来 m 行,每行三个整数 u,v,c,表示从点 u 到点 v 存在一条有向边,容量为 c。点的编号从 1 到 n。输出格式输出点 S 到点 T 的最大流。如果从点 S 无法到达点 T 则输出 0。数据范围2≤n≤1000,1≤m≤10000,0≤c≤10000,S≠T输入样例:7 14 1 71 2

    2022年8月10日
    12
  • JAVASocket实现聊天室「建议收藏」

    JAVASocket实现聊天室「建议收藏」JAVASocket实现聊天室文章目录JAVASocket实现聊天室Sokcet是什么JAVASOCKET编程中的两个重要对象ServerSocket构造方法acceptbindcloseSocket构造方法getInputStream,getOutputStreamclose聊天室实现服务端实现客户端实现读线程实现写线程实现运行结果Sokcet是什么socket本质上是两个端点之间的通…

    2022年6月15日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号