`

java取整和java四舍五入方法(转)

    博客分类:
  • Java
阅读更多
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();

        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 取整

    java 取整

    java 四舍五入 需要的朋友看看

    关于java四舍五入的代码。需要的朋友可以看看。

    java 使用取整函数

    java 使用取整函数 java 使用取整函数 java 使用取整函数

    java数值取整及保留两位小数

    java技术,对象操作:数值取整和保留两位小数,将数值转换成字符串。

    JAVA取整计算器源码

    闲来无聊,用eclipse写了个计算器程序,但只能实现整数的输入和计算,结果也只能取整!迫切希望能得到小数计算的算法!

    浅析java中的取整(/)和求余(%)

    主要介绍了浅析java中的取整(/)和求余(%),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Java开发技术大全(500个源代码).

    differ.java 测试静态方法与实例方法之间的区别 forefather.java 一个简单的基类 grandson.java 上面这个类的子类 hasConstructor.java 拥有构造器的类 hasFinalFun.java 拥有最终方法的类 hasRecall.java ...

    JAVA 十进制数转二进制数

    输入一个整十进制数n,把它转化为二进制,小数部分还没有考虑。。。

    Java程序设计基础:Math类.pptx

    Math类取整方法和random随机值方法 Math类 Math类 1 掌握常用数学函数; 2 会使用Math类中的方法解决数学问题。 ...long round( double x) //四舍五入返回一个长整型数。 int n = Math.round(2.1f)

    Java实现百分比

    NULL 博文链接:https://zhaoshijie.iteye.com/blog/798719

    面试题: Java Math类常见的数学运算和用法

    本文将介绍Java Math类的常见数学运算和用法,包括四舍五入、取整、幂运算、三角函数、随机数生成等。通过学习本文,您将了解如何使用Math类进行常用数学计算,以及如何应用这些方法解决实际问题。

    免费开源!! Java 面试必会 直通BAT

    # 1.35 Math.round(11.5)等於多少?...round 方法,它表示“四舍五入”,算法为 Math.floor(x+0.5),即将原来的数字加上0.5后再向 下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。

    Java Number & Math 类.pdf

    Java Number类提供了以下基本的数字操作:转换,比较,算术运算,取整,取余,取最大值和最小值,取绝对值,取幂,取对数,取根号,取随机数,取符号,取精度,取舍入值等。 三、什么是包装类? 在实际开发过程中,...

    java实现文件录入成绩.java

    一个文本文件中存储着一些学生的成绩,包括平时成绩(20%),实验成绩(30%)和期末卷面成绩(50%),所有成绩都是百...计算出综合成绩(四舍五入取整), 并对综合成绩进行降序排列。把所有成绩保存到一个文本文件中。

    Java中的相除(/)和取余(%)的实现方法

    主要介绍了Java中的相除(/)和取余(%)的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    JAVA 范例大全 光盘 资源

    实例43 数字的舍入 98 实例44 转换数字的进制 101 实例45 随机数 103 实例46 Java Applet绘制心形曲线 106 实例47 简单的计算器 107 实例48 日历和日期 118 实例49 Java编制的时钟 121 实例50 简单的日历 124...

    初级Java程序员面试题

    JDK 和 JRE 有什么区别? JDK(Java Development Kit),Java开发工具包 JRE(Java Runtime Environment),Java运行环境 JDK中包含JRE,JDK中有一个名为jre的...Math提供了三个与取整有关的方法:ceil、floor、round

    JAVA案例 第二篇:针对大数值取整数和小数、保留几位小数、特定位数的数值、自幂数.docx

    我们可以想象一下:既然能够判断一个数值是否为整数,那么就应该有机会将它的整数部分和小数部分分割开来,也就是我们常说的取整(它同时包含了取小数),在我们初学JAVA时,我们常用的方法是强制转换,或者利用...

    java中的三种取整函数总结

    下面小编就为大家带来一篇java中的三种取整函数总结。希望对大家有所帮助。一起跟随小编过来看看吧,祝大家游戏愉快哦

    java范例开发大全源代码

     8.2 成员变量和方法 236  实例152 使用类作为成员变量 236  实例153 构造方法 237  实例154 使用静态成员变量计算内存中实例化的对象数目 239  实例155 实现加减乘除的方法 240  8.3 面向对象的...

Global site tag (gtag.js) - Google Analytics