`
MouseLearnJava
  • 浏览: 465995 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java保留两位小数的几种做法

阅读更多

在平时做项目时,可能有这样的业务需求:页面或界面上展示的数据保留小数点后两位。

为了达到这样的展示效果,本文列举了几个方法:

1. 使用java.math.BigDecimal
2. 使用java.text.DecimalFormat
3. 使用java.text.NumberFormat
4. 使用java.util.Formatter
5. 使用String.format


... ... 另外可以自己实现或者借用封装好的类库来实现,在这篇文章中就不一一列举了。

本文给出上述5种方法的简单实现。

代码如下:

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Formatter;

public final class PrecisionTest {

	private PrecisionTest() {
	}

	/**
	 * 使用BigDecimal,保留小数点后两位
	 */
	public static String format1(double value) {

		BigDecimal bd = new BigDecimal(value);
		bd = bd.setScale(2, RoundingMode.HALF_UP);
		return bd.toString();
	}

	/**
	 * 使用DecimalFormat,保留小数点后两位
	 */
	public static String format2(double value) {

		DecimalFormat df = new DecimalFormat("0.00");
		df.setRoundingMode(RoundingMode.HALF_UP);
		return df.format(value);
	}

	/**
	 * 使用NumberFormat,保留小数点后两位
	 */
	public static String format3(double value) {

		NumberFormat nf = NumberFormat.getNumberInstance();
		nf.setMaximumFractionDigits(2);
		/*
		 * setMinimumFractionDigits设置成2
		 * 
		 * 如果不这么做,那么当value的值是100.00的时候返回100
		 * 
		 * 而不是100.00
		 */
		nf.setMinimumFractionDigits(2);
		nf.setRoundingMode(RoundingMode.HALF_UP);
		/*
		 * 如果想输出的格式用逗号隔开,可以设置成true
		 */
		nf.setGroupingUsed(false);
		return nf.format(value);
	}

	/**
	 * 使用java.util.Formatter,保留小数点后两位
	 */
	public static String format4(double value) {
		/*
		 * %.2f % 表示 小数点前任意位数 2 表示两位小数 格式后的结果为 f 表示浮点型
		 */
		return new Formatter().format("%.2f", value).toString();
	}

	/**
	 * 使用String.format来实现。
	 * 
	 * 这个方法其实和format4是一样的
	 */
	public static String format5(double value) {

		return String.format("%.2f", value).toString();
	}
}


测试代码及结果:

public class Main {

	public static void main(String[] args) {

		double[] testData = new double[] { 100.123D, 1234567.897D, 100.0052D,
				80.00D };

		for (double value : testData) {
			System.out.println(PrecisionTest.format1(value));
			System.out.println(PrecisionTest.format2(value));
			System.out.println(PrecisionTest.format3(value));
			System.out.println(PrecisionTest.format4(value));
			System.out.println(PrecisionTest.format5(value));
		}
	}
}


100.12
100.12
100.12
100.12
100.12
1234567.90
1234567.90
1234567.90
1234567.90
1234567.90
100.01
100.01
100.01
100.01
100.01
80.00
80.00
80.00
80.00
80.00
2
0
分享到:
评论

相关推荐

    Java保留两位小数的几种写法总结

    在Java编程中,有时我们需要将数字格式化为保留两位小数的形式,以便在页面或界面上展示。这里我们将深入探讨几种常见的实现方式,并通过具体的示例代码来理解它们的工作原理。 1. **使用java.math.BigDecimal** `...

    java使double保留两位小数的多方法 java保留两位小数

    本文将详细介绍几种在Java中使double类型保留两位小数的方法。 ### 方法一:使用BigDecimal进行四舍五入 `BigDecimal` 类提供了精确的浮点数运算,并且支持自定义舍入模式。以下是一个例子: ```java double f = ...

    java、freemarker保留两位小数

    Java和Freemarker保留两位小数的实现方法 Java语言中保留两位小数可以使用String.format()方法,例如: double acc = 22.4322; String accX = String.format("%.2f", acc); 这将将acc的值保留到小数点后两位,并...

    Java中Double除保留后小数位的几种方法(小结)

    Java中Double除保留后小数位的几种方法 Java中Double除保留后小数位的几种方法是指在Java编程语言中,对Double类型数据进行保留小数位的操作。这种操作在实际开发中非常常见,例如在统计成绩、金融计算、科学计算等...

    Java中限制小数位数问题

    这里的`"#.00"`表示保留两位小数,`#`代表任意位数,而`0`则代表必须显示的位数。如果希望显示更多或更少的小数位数,只需修改格式字符串即可。 #### 方式三:使用`String.format`方法 `String.format`是一种非常...

    遍历MAP的几种方法

    遍历MAP的几种方法,利用keyset进行遍历,它的优点在于可以根据你所想要的key值得到你想要的 values,更具灵活性

    保留几位小数的5种常见方法

    通过构造函数传入格式字符串,如 `"0.00"` 表示保留两位小数,再通过 `setRoundingMode()` 设置舍入模式。例如: ```java double a = 2.5; DecimalFormat df = new DecimalFormat("0.00"); df.setRoundingMode...

    js正则表达式 限1-2位整数,或者至多含有两位小数的写法

    在本篇文档中,作者介绍了如何使用正则表达式来匹配限制为1到2位整数,或者最多包含两位小数的数字字符串。 ### 1. 正则表达式的组成 正则表达式由一系列字符构成,这些字符具有特定的含义。基本的组成部分包括: ...

    js数字转换为float,取N位小数

    // 保留两位小数 var roundedNum = num.toFixed(2); // 输出结果 console.log(roundedNum); // 输出 "3.14" // 如果需要将结果再次转回数字 var backToNum = parseFloat(roundedNum); console.log(backToNum); // ...

    jisuanqi.zip_小数计算器_小数运算_计算器 小数_计算器+小数_计算器小数

    乘法"*"用于将小数相乘,如2.5 * 4.8 = 12.0,而除法"/"则是将一个数除以另一个数,如10 / 3.14 ≈ 3.17(四舍五入到两位小数)。这些基本运算构成了小数计算器的核心功能。 在编程实现小数计算器时,需要注意以下...

    Java Double 精度问题总结

    本文将详细介绍Java中的 `double` 类型精度问题,并提供几种解决方法。 #### 一、Java Double 精度丢失的原因 1. **二进制表示限制**:`double` 类型基于IEEE 754标准的双精度格式,使用64位来表示一个浮点数。...

    小数化分数(算法)

    在计算机科学领域,将小数转化为分数是一种常见的数学操作,特别是在算法竞赛(ACM)中,这类问题常常作为测试选手编程能力与数学思维的题目出现。循环小数转化为分数的算法是一个经典问题,它涉及到数论和算法设计...

    Java中常见的几种运算符.doc

    需要注意的是,在进行除法运算时,如果两个整数相除,结果将是一个整数,且小数部分将被省略。如果要获取小数部分,需要使用浮点型数据。 例如:int a = 10; int b = 3; int c = a / b; // c 的值将是 3 二、关系...

    java 取整

    // 保留两位小数 RoundingMode mode = RoundingMode.HALF_UP; // 四舍五入 BigDecimal roundedBigDecimal = bd.setScale(scale, mode); int roundedNum = roundedBigDecimal.intValue(); ``` 这样,`roundedNum`将...

    Java基础之Java编程基础

    此外,Java保留了几个未使用的关键字,如"goto"和"const"。 6. Java数据类型 Java的数据类型分为基本数据类型和引用数据类型两大类。基本数据类型包括了逻辑型(boolean)、字符型(char)、整数型(byte, short, ...

    Java编程中须注意的细节.pdf

    下面将详细阐述文档中提到的Java编程中应注意的几个关键细节。 1. 数值表达式中的奇偶判断 在Java中,判断一个整数是否为奇数时,应避免使用i%2==1的表达式,因为当整数i为负数时,例如-1%2的结果为-1,这并不是...

    java复习题.docx

    5. **格式化输出**:为了使输出的数字具有特定格式,例如保留两位小数,题目中使用了`DecimalFormat`类。如`DecimalFormat gs=new DecimalFormat("#.00");`定义了一个格式对象,然后`gs.format(res)`将结果格式化后...

    Java 计算类

    Java计算类是一个专门设计用于进行基本数学运算(加、减、乘、除)以及控制数字格式(四舍五入、保留特定位数的小数)的类。该类使用了Java中的BigDecimal类来确保在处理大数字或者要求精度高的计算时,能够保持计算...

    java 解惑 又一部java经典书

    `这样的方式输出结果,保留两位小数,这样可以得到正确的显示结果。 - **使用整数**:如果应用场景允许,可以使用整数来进行计算。例如,将金额转换为分,从而避免浮点数运算。示例代码如下: ```java System.out....

Global site tag (gtag.js) - Google Analytics