`
fenxiang
  • 浏览: 6874 次
社区版块
存档分类
最新评论

Java保留指定位小数的几种操作

    博客分类:
  • Java
阅读更多

import java.math.BigDecimal;
import java.text.DecimalFormat;

/**
 * 获取指定位数的小数工具类<br>
 * 
 * @author mxy(Email:987938582@qq.com)
 * 
 */
public class NumberFormat {

	/**
	 * BigDecimal转换最简便,采用四舍五入方式
	 * 
	 * @param num 要转换的数字
	 * @param length 保留几位小数
	 */
	public double formatByBigDecimal(double num, int length) {
		BigDecimal bg = new BigDecimal(num);
		double f1 = bg.setScale(length, BigDecimal.ROUND_HALF_UP).doubleValue();
		// System.out.println("转换后的结果:"+f1);
		return f1;
	}

	/**
	 * DecimalFormat转换最简便,采用四舍五入方式
	 * 
	 * @param num 要转换的数字
	 * @param length 保留几位小数
	 */
	public double formatByDecimalFormat(double num, int length) {
		String foramtStr = "#";
		if (length > 0) {
			foramtStr += ".";
			for (int i = 0; i < length; i++) {
				foramtStr += "0";
			}
		}
		DecimalFormat df = new DecimalFormat(foramtStr);
		// System.out.println("转换后的结果:"+df.format(num));
		return Double.valueOf(df.format(num));
	}

	/**
	 * String.format方式格式化,采用四舍五入方式
	 * 
	 * @param num 要转换的数字
	 * @param length 保留几位小数
	 */
	public double formatByStringFormat(double num, int length) {
		double f = 111231.5585;
		String formatStr = "";
		if (length > 0) {
			formatStr = "%." + length + "f";
		} else {
			formatStr = "%.0f";
		}
		// System.out.println("转换后的结果:"+String.format(formatStr, num));
		return Double.valueOf(String.format(formatStr, num));

	}

	public static void main(String[] args) {
		NumberFormat f = new NumberFormat();
		double num = 111231.558512311234812932134923;
		/* 10位小数 */
		System.out.println(f.formatByBigDecimal(num, 10));
		System.out.println(f.formatByDecimalFormat(num, 10));
		System.out.println(f.formatByStringFormat(num, 10));
		/* 10位小数 */

		System.out.println();

		/* 5位小数 */
		System.out.println(f.formatByBigDecimal(num, 5));
		System.out.println(f.formatByDecimalFormat(num, 5));
		System.out.println(f.formatByStringFormat(num, 5));
		/* 5位小数 */

		System.out.println();

		/* 一位小数 */
		System.out.println(f.formatByBigDecimal(num, 1));
		System.out.println(f.formatByDecimalFormat(num, 1));
		System.out.println(f.formatByStringFormat(num, 1));
		/* 一位小数 */

		System.out.println();

		/* 0位小数 */
		System.out.println(f.formatByBigDecimal(num, 0));
		System.out.println(f.formatByDecimalFormat(num, 0));
		System.out.println(f.formatByStringFormat(num, 0));
		/* 0位小数 */

		System.out.println();

		/*-1位小数*/
		System.out.println(f.formatByBigDecimal(num, -1));
		System.out.println(f.formatByDecimalFormat(num, -1));
		System.out.println(f.formatByStringFormat(num, -1));
		/*-1位小数*/
	}
}



运行结果:
111231.5585123112
111231.5585123112
111231.5585123112

111231.55851
111231.55851
111231.55851

111231.6
111231.6
111231.6

111232.0
111232.0
111232.0

111230.0
111232.0
111232.0
分享到:
评论

相关推荐

    Java编程基础

    根据描述,我们可以深入探讨注释的几种类型及其具体用途。 1. **单行注释(Line Comment)** 使用`//`表示,编译器遇到它会忽略该符号之后的所有文本。这种注释方式简洁明了,适用于对单一语句或简短内容的注解。...

    达内 coreJava 习题答案

    6、输出所有的水仙花数,把谓水仙花数是指一个数3位数,其各各位数字立方和等于其本身, 例如: 153 = 1*1*1 + 3*3*3 + 5*5*5 class DafodilNumber{ public static void main(String[] args){ System.out....

    中国355城市坐标JSON

    保留两位小数的坐标可以提供相当高的精度,一般可以精确到几十米级别。然而,由于地球表面的曲率,越靠近极地,同样的角度间隔在地表上的距离差异会越大。因此,这种精度在大部分应用中已经足够,但对于需要极高...

    2021-2022计算机二级等级考试试题及答案No.9199.docx

    这里的正确答案D表示上述三种说法都不对,实际上,数据独立性是指数据与存储方式的分离。 3. JavaScript 打开窗口:在JavaScript中,使用`window.open()`方法可以打开新的窗口或标签页。正确答案是B,`window.open...

    2021-2022计算机二级等级考试试题及答案No.12.docx

    **表达式**:`0.01*int(100*(x+0.005))` 可用于将浮点数x保留两位小数,并进行四舍五入处理。 ### 18. MySQL中的NULL值 **表示未知或缺失**:在MySQL中,NULL表示未知或缺失的值。 ### 19. 常量的类型说明符 **...

    Android-Calculator:安卓计算器

    对于计算结果,可能需要格式化显示,比如保留小数位数,处理溢出等问题。 6. **错误处理** 应考虑各种可能的错误情况,如除数为零、输入非法字符等,并提供友好的错误提示。可以使用Toast或AlertDialog来通知用户...

    2021-2022计算机二级等级考试试题及答案No.1767.docx

    - **解释**: URL是一种标准的资源定位协议,用于标识Web上信息资源的具体位置,方便用户访问和获取。 ### 19. Session属性的检索 - **知识点**: 用于检索session属性userid的值的方法为`session.getAttribute(...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Android 一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导开发 IOS 由苹果公司开发的移动操作系统 Webkit 一个开源的浏览器引擎,在手机上的...

    C语言入门经典(第4版)--源代码及课后练习答案

    IvorHorton还著有关于C、C++和Java的多部入门级好书,如《C语言入门经典(第4版)》和《C++入门经典(第3版)》。 译者  杨浩,知名译者,大学讲师,从事机械和计算机方面的教学和研究多年,发表论文数篇,参编和翻译的...

Global site tag (gtag.js) - Google Analytics