`

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 语言中,四舍五入方法可以通过多种方式实现,包括使用 Math 类的方法、DecimalFormat 类的方法和 BigDecimal 类的方法。 1. 使用 Math 类的方法 Java 的 Math 类提供了多种数学函数,包括 floor、ceil 和 ...

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

    本文将详细解析如何在Java中实现四舍五入,并探讨不同方法的适用场景。 ### Java四舍五入的基础概念 四舍五入是指将一个数字舍去小数部分时,如果小数部分小于等于0.4,则向下取整;如果小数部分大于等于0.6,则...

    java 取整

    这个过程可以分为多种类型,包括向下取整、向上取整、四舍五入等。本篇文章将深入探讨Java中如何进行这些取整操作。 1. 向下取整:这是最简单的取整方式,它会丢弃任何小数部分,只保留整数部分。Java提供了`Math....

    四舍五入_四舍五入问题_源码

    不过,根据提供的描述,这个问题相对简单,主要关注的是基本的四舍五入和整数部分的提取。 至于文档"四舍五入.docx",它可能包含更详细的代码示例、解释或者练习题,可以帮助读者深入理解这个主题。打开并阅读这个...

    java 使用取整函数

    如果浮点数是半整数(如 3.5 或 -3.5),`Math.round()` 将会进行四舍五入。这个方法适用于需要更大范围整数的情况。 ```java double num = 3.6; long result = Math.round(num); // result will be 4L double num...

    关于java的四舍五入问题

    1. **位运算**:通过位移和与运算实现四舍五入,这种方法适用于整数四舍五入,对于小数部分的处理可能会比较复杂。 2. **手动除法和乘法**:将数字乘以10的幂,进行整数四舍五入,然后除以相同的幂,可以保留指定的...

    JAVA取整计算器源码

    然后,可以使用上述的取整方法根据用户需求选择保留小数位数或进行四舍五入。 例如,我们可以创建一个新的类`DecimalCalculator`,包含两个`double`类型的变量作为操作数,提供支持小数的加、减、乘、除方法。在...

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

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

    金额的大小转换及小数的四舍五入处理

    四舍五入模式有多种,如`ROUND_UP`(向上取整)、`ROUND_DOWN`(向下取整)等,`ROUND_HALF_UP`是最常用的,即常规的四舍五入规则。 总结起来,金额的大小转换涉及到数字的格式化,确保其符合人类阅读习惯;而小数...

    sishewuru.rar_四舍五入

    除了标准的四舍五入,还有其他的舍入策略,如向零取整(ROUND_TO_ZERO)、向上取整(ROUND_UP)和向下取整(ROUND_DOWN)。这些策略可以根据实际需求选择使用,比如在金融计算中通常会使用不偏向任何一方的舍入策略...

    java代码-BigDecimal 四舍五入保留2位小数. 金额从单位分转成单位元

    常见的舍入模式有`RoundingMode.HALF_UP`(常规四舍五入),`RoundingMode.DOWN`(向下取整),`RoundingMode.UP`(向上取整)等。这里我们使用`HALF_UP`: ```java BigDecimal roundedDollar = oneDollar.setScale...

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

    浅析Java中的取整(/)和求余(%) Java语言中,取整和求余是两个基本的数学运算符,分别用“/”和“%”表示。下面我们将详细介绍这两个运算符的使用和注意事项。 一、取整运算符(/) 取整运算符是将一个数字...

    几个很不错的Java游戏源代码

    例如,使用ActionListener监听按钮点击事件,使用Integer类的方法进行数字的处理,如`Math.round()`用于四舍五入取整。 综合这些游戏源代码,开发者不仅能巩固Core Java的基本语法,如类、对象、继承、封装等面向...

    java中的三种取整函数总结

    总之,Java中的Math.floor()、Math.rint()和Math.ceil()分别对应着向下取整、四舍五入取整和向上取整的操作,它们为开发者提供了灵活的数据处理手段。在编程实践中,应结合具体场景选择合适的取整方法,以确保代码的...

    Rounding2:继续四舍五入 app 介绍方法和数组

    可以使用`BigDecimal`类的`setScale()`方法,它可以设置保留的小数位数,并指定四舍五入模式,如`RoundingMode.HALF_UP`(通常的四舍五入)、`RoundingMode.DOWN`(向下取整)等。 ```java BigDecimal bd = new ...

    Java实现百分比

    这个工具类可能包含用于计算和处理百分比的方法。通常,一个这样的工具类会包含静态方法,因为它们不依赖于类的实例状态,可以被其他类直接调用。例如,它可能有一个名为`calculatePercentage`的方法: ```java ...

    java新手初悟

    【Java新手初悟】这篇内容主要涉及了Java编程中的几个基础知识点,包括四舍五入的处理、抽象类与接口的应用以及在命令行下编译和运行带包的Java文件,以及如何打包成JAR文件。以下是这些知识点的详细解释: 1. **四...

    Java常用包

    * round()方法:返回四舍五入值 * sin()方法:返回正弦值 * sqrt()方法:返回平方根值 * tan()方法:返回正切值 五、Object类 Object类是Java中的根类,提供了多种实例方法,包括: * equals()方法:判断对象是否...

    Math.Round()--c#与java的区别.pdf

    在金融交易中,单纯的四舍五入可能会导致长期的误差积累,使得金融机构可能出现盈亏不平衡。为了解决这个问题,银行家舍入法应运而生。 银行家舍入的核心思想是确保每一轮舍入之后,数据的正负误差可以相互抵消,...

    类 java.lang.Number分析

    这些转换方法可能会涉及舍入或取整操作,以适应目标数据类型的范围。 - `doubleValue()`:将Number对象转换为double类型,可能涉及舍入。 - `floatValue()`:将Number对象转换为float类型,同样可能涉及舍入。 - `...

Global site tag (gtag.js) - Google Analytics