JAVA中常用的取整,四舍五入,截取,小数直接进位等方法整理。以便加深记忆。
直接贴上代码:
/*
* 文件名:CastingNumbers.java
* 版权:Copyright by www.huawei.com
* 描述:java取整,四舍五入,截取,进位方法整理。
* 修改人:gaoxiaohan
* 修改时间:2014-10-13
* 跟踪单号:
* 修改单号:
* 修改内容:
*/
package com.myoursky.j2se;
import java.math.BigDecimal;
import java.text.DecimalFormat;
public class CastingNumbers {
public static void main(String[] args) {
double num1 = 2;
double num2 = 2.3;
double num3 = 2.5;
double num4 = 2.8;
double num5 = -2;
double num6 = -2.3;
double num7 = -2.5;
double num8 = -2.8;
//int取整
System.out.println("===int 取整===");
System.out.println((int)num1);
System.out.println((int)num2);
System.out.println((int)num3);
System.out.println((int)num4);
System.out.println((int)num5);
System.out.println((int)num6);
System.out.println((int)num7);
System.out.println((int)num8);
//Math.floor,floor地板的意思,就是返回小的值
System.out.println("\n===Math.floor===");
System.out.println(Math.floor(num1));
System.out.println(Math.floor(num2));
System.out.println(Math.floor(num3));
System.out.println(Math.floor(num4));
System.out.println(Math.floor(num5));
System.out.println(Math.floor(num6));
System.out.println(Math.floor(num7));
System.out.println(Math.floor(num8));
//Math.ceil,ceil天花板的意思,就是返回大的值
System.out.println("\n===Math.ceil===");
System.out.println(Math.ceil(num1));
System.out.println(Math.ceil(num2));
System.out.println(Math.ceil(num3));
System.out.println(Math.ceil(num4));
System.out.println(Math.ceil(num5));
System.out.println(Math.ceil(num6));
System.out.println(Math.ceil(num7));
System.out.println(Math.ceil(num8));
//Math.rint 四舍五入,返回double值
//注意.5的时候会取偶数
System.out.println("\n===Math.rint===");
System.out.println(Math.rint(num1));
System.out.println(Math.rint(num2));
System.out.println(Math.rint(num3));
System.out.println(Math.rint(num4));
System.out.println(Math.rint(num5));
System.out.println(Math.rint(num6));
System.out.println(Math.rint(num7));
System.out.println(Math.rint(num8));
//Math.round,float时返回int值,double时返回long值
System.out.println("\n===Math.round===");
System.out.println(Math.round(num1));
System.out.println(Math.round(num2));
System.out.println(Math.round(num3));
System.out.println(Math.round(num4));
System.out.println(Math.round(num5));
System.out.println(Math.round(num6));
System.out.println(Math.round(num7));
System.out.println(Math.round(num8));
//DecimalFormat
//注意.5的时候会取偶数
System.out.println("\n===DecimalFormat===");
System.out.println(new DecimalFormat("0").format(num1));
System.out.println(new DecimalFormat("0").format(num2));
System.out.println(new DecimalFormat("0").format(num3));
System.out.println(new DecimalFormat("0").format(num4));
System.out.println(new DecimalFormat("0").format(num5));
System.out.println(new DecimalFormat("0").format(num6));
System.out.println(new DecimalFormat("0").format(num7));
System.out.println(new DecimalFormat("0").format(num8));
//setScale(0, BigDecimal.ROUND_HALF_UP))
System.out.println("\n===setScale(0, BigDecimal.ROUND_HALF_UP))===");
System.out.println(new BigDecimal(num1).setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println(new BigDecimal(num2).setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println(new BigDecimal(num3).setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println(new BigDecimal(num4).setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println(new BigDecimal(num5).setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println(new BigDecimal(num6).setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println(new BigDecimal(num7).setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println(new BigDecimal(num8).setScale(0, BigDecimal.ROUND_HALF_UP));
//abs求绝对值
System.out.println("\n===abs求绝对值===");
System.out.println(Math.abs(num3));
System.out.println(Math.abs(num7));
}
}
代码输出结果:
===int 取整===
2
2
2
2
-2
-2
-2
-2
===Math.floor===
2.0
2.0
2.0
2.0
-2.0
-3.0
-3.0
-3.0
===Math.ceil===
2.0
3.0
3.0
3.0
-2.0
-2.0
-2.0
-2.0
===Math.rint===
2.0
2.0
2.0
3.0
-2.0
-2.0
-2.0
-3.0
===Math.round===
2
2
3
3
-2
-2
-2
-3
===DecimalFormat===
2
2
2
3
-2
-2
-2
-3
===setScale(0, BigDecimal.ROUND_HALF_UP))===
2
2
3
3
-2
-2
-3
-3
===abs求绝对值===
2.5
2.5
注意:
1.如果通过Math.floor取整,需要用int进行强制类型转换。
2.BigDecimal的setScale方法,通过设置第二个参数,也可以实现取整,进位等功能。具体可以查看API。