`
Scliu123
  • 浏览: 41357 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

JDK_实例(数字的舍入)

阅读更多
package book.number;

import java.math.BigDecimal;
/**
 * 对数字进行各种模式的舍入,如四舍五入等
 */
public class Round {
	/**
	 * 利用java.lang.Math类对数字进行四舍五入
	 * @param dou	待舍入的数字
	 * @return
	 */
	public static long getTraRoundMath(double dou) {
		//Math.round方法采用首先将dou加上0.5,然后取下整数。
		//dou = 4.6, 首先dou加0.5成5.1,其下整数为5。四舍五入的结果就是5。
		return Math.round(dou);
	}
	/**
	 * 对数字进行四舍五入
	 * @param dou	待舍入的数字
	 * @return
	 */
	public static long getTraRound(double dou) {
		//四舍五入模式相当于BigDecimal.ROUND_HALF_UP模式
		return Round.getIntRound(dou, BigDecimal.ROUND_HALF_UP);
	}
	/**
	 * 要求舍入后返回整数类型,
	 * 
	 * @param dou  待舍入的数字
	 * @param roundmode  舍入模式
	 * @return
	 */
	public static long getIntRound(double dou, int roundmode) {
		//	最后取得BigDecimal对象转化成int并返回。
		return Round.getRound(dou, 0, roundmode).longValue();
	}
	/**
	 * 要求舍入后返回BigDecimal类型
	 * 
	 * @param dou  待舍入的数字
	 * @param scale 返回的BigDecimal对象的标度(scale)
	 * @param roundmode  舍入模式
	 * @return
	 */
	public static BigDecimal getRound(double dou, int scale, int roundmode) {
		//创建一个新的BigDecimal对象paramNumber,该对象的值和dou大小一样。
		BigDecimal paramNumber = new BigDecimal(dou);
		//然后调用paramNumber的setScale方法,该方法返回一个 BigDecimal对象temp,
		//返回值的标度为第一个参数指定的值,标度为大小表示小数部分的位数
		//第二个参数指定了paramNumber对象到temp对象的舍入模式,如四舍五入等。
		return paramNumber.setScale(scale, roundmode);
		//实际可以一条语句实现:return new BigDecimal(dou).setScale(0, roundmode);
	}
	public static void main(String[] args) {
		double dou1 = 8.50;
		double dou2 = -9.54;
		System.out.println("待舍入的数字:dou1 = " + dou1 + "; dou2 = " + dou2);
		System.out.println("采用Math类实现四舍五入的结果: \t" + Round.getTraRoundMath(dou1)
				+ "\t" + Round.getTraRoundMath(dou2));
		System.out.println("四舍五入后的结果: \t" + Round.getTraRound(dou1) + "\t"
				+ Round.getTraRound(dou2));

		System.out.println("要求舍入后返回整数:");
		//接近正无穷大的舍入模式
		System.out.println("舍入模式ROUND_CEILING: \t"
				+ Round.getIntRound(dou1, BigDecimal.ROUND_CEILING) + "\t"
				+ Round.getIntRound(dou2, BigDecimal.ROUND_CEILING));

		//接近零的舍入模式
		System.out.println("舍入模式ROUND_DOWN: \t"
				+ Round.getIntRound(dou1, BigDecimal.ROUND_DOWN) + "\t"
				+ Round.getIntRound(dou2, BigDecimal.ROUND_DOWN));

		//舍入远离零的舍入模式
		System.out.println("舍入模式ROUND_UP : \t"
				+ Round.getIntRound(dou1, BigDecimal.ROUND_UP) + "\t"
				+ Round.getIntRound(dou2, BigDecimal.ROUND_UP));

		//接近负无穷大的舍入模式
		System.out.println("舍入模式ROUND_FLOOR: \t"
				+ Round.getIntRound(dou1, BigDecimal.ROUND_FLOOR) + "\t"
				+ Round.getIntRound(dou2, BigDecimal.ROUND_FLOOR));

		//向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为ROUND_DOWN舍入模式。
		System.out.println("舍入模式ROUND_HALF_DOWN:\t"
				+ Round.getIntRound(dou1, BigDecimal.ROUND_HALF_DOWN) + "\t"
				+ Round.getIntRound(dou2, BigDecimal.ROUND_HALF_DOWN));

		//向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
		System.out.println("舍入模式ROUND_HALF_EVEN:\t"
				+ Round.getIntRound(dou1, BigDecimal.ROUND_HALF_EVEN) + "\t"
				+ Round.getIntRound(dou2, BigDecimal.ROUND_HALF_EVEN));

		//向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为ROUND_UP舍入模式。
		System.out.println("舍入模式ROUND_HALF_UP : \t"
				+ Round.getIntRound(dou1, BigDecimal.ROUND_HALF_UP) + "\t"
				+ Round.getIntRound(dou2, BigDecimal.ROUND_HALF_UP));

		System.out.println();
		System.out.println("要求舍入后返回数字的小数部分保留一位:");
		System.out.println("舍入模式ROUND_CEILING: \t"
				+ Round.getRound(dou1, 1, BigDecimal.ROUND_CEILING) + "\t"
				+ Round.getRound(dou2, 1, BigDecimal.ROUND_CEILING));
		System.out.println("舍入模式ROUND_DOWN: \t"
				+ Round.getRound(dou1, 1, BigDecimal.ROUND_DOWN) + "\t"
				+ Round.getRound(dou2, 1, BigDecimal.ROUND_DOWN));
		System.out.println("舍入模式ROUND_UP : \t"
				+ Round.getRound(dou1, 1, BigDecimal.ROUND_UP) + "\t"
				+ Round.getRound(dou2, 1, BigDecimal.ROUND_UP));
		System.out.println("舍入模式ROUND_FLOOR: \t"
				+ Round.getRound(dou1, 1, BigDecimal.ROUND_FLOOR) + "\t"
				+ Round.getRound(dou2, 1, BigDecimal.ROUND_FLOOR));
		System.out.println("舍入模式ROUND_HALF_DOWN:\t"
				+ Round.getRound(dou1, 1, BigDecimal.ROUND_HALF_DOWN) + "\t"
				+ Round.getRound(dou2, 1, BigDecimal.ROUND_HALF_DOWN));
		System.out.println("舍入模式ROUND_HALF_EVEN:\t"
				+ Round.getRound(dou1, 1, BigDecimal.ROUND_HALF_EVEN) + "\t"
				+ Round.getRound(dou2, 1, BigDecimal.ROUND_HALF_EVEN));
		System.out.println("舍入模式ROUND_HALF_UP : \t"
				+ Round.getRound(dou1, 1, BigDecimal.ROUND_HALF_UP) + "\t"
				+ Round.getRound(dou2, 1, BigDecimal.ROUND_HALF_UP));
	}
}

 

分享到:
评论

相关推荐

    Java JDK实例宝典

    全部代码出自电子工业出版社夏先波的《Java JDK实例宝典》一书,本书以J2SE 5.0为开发环境,选取Java应用的典型实例,循序渐进地介绍了Java语言的各种开发方法和技巧,实例代码注释详细规范,思路清晰。 第1章 ...

    JAVA 范例大全 光盘 资源

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

    Java方法实例

    - `Math.round()`方法用于四舍五入。 #### 数字格式化 Java提供了多种数字格式化的方式: 1. **十进制转二进制、八进制、十六进制:** ```java String binary = Integer.toBinaryString(10); String octal =...

    Java经典实例

    `Math.round()`方法用于对数值进行四舍五入处理。 3. **数字格式化**: ```java NumberFormat nf = NumberFormat.getInstance(); String formattedNumber = nf.format(1234567.89); ``` `NumberFormat`类...

    2023年开发人员面试宝典Java版.docx

    Math.round() 是 Java 中的数学函数,用于将数字四舍五入。 1.13 构造器是否可以被重写 构造器不能被重写,因为构造器是对象的初始化方法。 1.14 抽象类和接口的区别 抽象类和接口都是 Java 中的抽象类型,但...

    java必刷面试题答案

    Math.round(-15)等于-15,因为Math.round方法用于将double类型的数字四舍五入到最接近的整数。 6. String属于基础的数据类型吗? 不是。String是java的引用类型,它是一个类,而不是基础的数据类型。 7. java中...

    基本数据类型.docx

    在处理数据类型转换时,遵循转换规则,如整数类型可以自动转换为浮点类型,但可能会有舍入误差。字符可以提升为整数,因为字符在内存中也是以整数形式存储的Unicode值。 内存溢出问题通常发生在试图分配超出可用...

    50个java常见面试题

    `Math.round()` 方法对数字进行四舍五入处理。对于负数 `-1.5`,`Math.round()` 的行为是将其加 `0.5` 后向下取整。因此,`Math.round(-1.5)` 的结果为 `-1`。 #### 5. String 是否属于基础数据类型 Java 中的基础...

    java面试宝典

    该方法将浮点数四舍五入为最接近的整数。 16. **代码不妥之处**:没有提供具体代码,通常不妥之处可能涉及语法错误、逻辑错误、资源泄漏等问题。 17. **访问修饰符的区别**:public表示公共访问,任何地方都可以...

    (2020最新)Java面试题.pdf

    :-1,因为Math.round方法将数字四舍五入到最接近的整数。 6. String属于基础数据类型吗?:不属于,因为String是Java中的一个类。 7. Java中的字符串操作类有哪些?它们之间有什么区别?:String、StringBuilder、...

    200面试题-基础 全部有 java 数据库 ssm 微服务等

    -1,因为 Math.round() 方法用于将数字四舍五入到最接近的整数。 知识点:Java 中的数学运算、Math 类的使用。 6. String 属于基础的数据类型吗?否,String 是一个对象类型,而不是基础数据类型。 知识点:Java 中...

    Java面试题总结(200道).docx

    - `Math.round()`方法用于对数字进行四舍五入处理。当参数为负数时,会向零的方向进行四舍五入。因此`Math.round(-1.5)`的结果为`-1`。 6. **`String`是否属于基础数据类型** - `String`不是基础数据类型,而是...

    J2EE考题大汇总

    - **解析**:`Math.round()`函数用于四舍五入一个浮点数。对于正数,如`Math.round(11.5)`结果为12;对于负数,如`Math.round(-11.5)`结果为-11。这是因为`Math.round()`实际上是对输入值乘以2后进行`Math.floor()`...

    最新程序员面试题(达内内部培训资料):面霸v5.0修订.pdf

    对于小数点后第一位为5的情况,`Math.round`会向远离零的方向进行四舍五入。 #### 16. 下面的代码有什么不妥之处? - **答案**:由于问题中未给出具体的代码,无法直接指出其中的问题。请提供完整的代码示例以便...

    java面试葵花宝典

    - `Math.round(-11.5)`等于-11,同样遵循四舍五入的原则。 #### 面向对象的特征有哪些方面 - **封装**: 将数据和行为绑定在一起,隐藏内部细节,提供简洁的操作接口。 - **继承**: 子类可以继承父类的属性和方法,...

    尚硅谷JavaSE阶段考试-学生练习版1

    - `Math.round()`用于四舍五入,`Math.round(11.5)`的结果是12,`Math.round(-11.5)`的结果是-11。 3. **对象比较**: - `a==b`比较的是两个对象的内存地址,看它们是否指向同一个实例。 - `a.equals(b)`比较的...

    程序员面试宝典(变态级Java程序员面试32问)pdf

    `Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11,遵循向远离零的方向舍入的规则。 ### 11. short类型变量运算的陷阱 `short s1 = 1; s1 = s1 + 1;`会导致编译错误,因为`s1 + 1`的结果默认为int类型,不能...

Global site tag (gtag.js) - Google Analytics