在平时做项目时,可能有这样的业务需求:页面或界面上展示的数据保留小数点后两位。
为了达到这样的展示效果,本文列举了几个方法:
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
分享到:
相关推荐
在Java编程中,有时我们需要将数字格式化为保留两位小数的形式,以便在页面或界面上展示。这里我们将深入探讨几种常见的实现方式,并通过具体的示例代码来理解它们的工作原理。 1. **使用java.math.BigDecimal** `...
Java和Freemarker保留两位小数的实现方法 Java语言中保留两位小数可以使用String.format()方法,例如: double acc = 22.4322; String accX = String.format("%.2f", acc); 这将将acc的值保留到小数点后两位,并...
本文将详细介绍几种在Java中使double类型保留两位小数的方法。 ### 方法一:使用BigDecimal进行四舍五入 `BigDecimal` 类提供了精确的浮点数运算,并且支持自定义舍入模式。以下是一个例子: ```java double f = ...
Java中Double除保留后小数位的几种方法 Java中Double除保留后小数位的几种方法是指在Java编程语言中,对Double类型数据进行保留小数位的操作。这种操作在实际开发中非常常见,例如在统计成绩、金融计算、科学计算等...
这里的`"#.00"`表示保留两位小数,`#`代表任意位数,而`0`则代表必须显示的位数。如果希望显示更多或更少的小数位数,只需修改格式字符串即可。 #### 方式三:使用`String.format`方法 `String.format`是一种非常...
通过构造函数传入格式字符串,如 `"0.00"` 表示保留两位小数,再通过 `setRoundingMode()` 设置舍入模式。例如: ```java double a = 2.5; DecimalFormat df = new DecimalFormat("0.00"); df.setRoundingMode...
遍历MAP的几种方法,利用keyset进行遍历,它的优点在于可以根据你所想要的key值得到你想要的 values,更具灵活性
// 保留两位小数 var roundedNum = num.toFixed(2); // 输出结果 console.log(roundedNum); // 输出 "3.14" // 如果需要将结果再次转回数字 var backToNum = parseFloat(roundedNum); console.log(backToNum); // ...
在本篇文档中,作者介绍了如何使用正则表达式来匹配限制为1到2位整数,或者最多包含两位小数的数字字符串。 ### 1. 正则表达式的组成 正则表达式由一系列字符构成,这些字符具有特定的含义。基本的组成部分包括: ...
在计算机科学领域,将小数转化为分数是一种常见的数学操作,特别是在算法竞赛(ACM)中,这类问题常常作为测试选手编程能力与数学思维的题目出现。循环小数转化为分数的算法是一个经典问题,它涉及到数论和算法设计...
乘法"*"用于将小数相乘,如2.5 * 4.8 = 12.0,而除法"/"则是将一个数除以另一个数,如10 / 3.14 ≈ 3.17(四舍五入到两位小数)。这些基本运算构成了小数计算器的核心功能。 在编程实现小数计算器时,需要注意以下...
本文将详细介绍Java中的 `double` 类型精度问题,并提供几种解决方法。 #### 一、Java Double 精度丢失的原因 1. **二进制表示限制**:`double` 类型基于IEEE 754标准的双精度格式,使用64位来表示一个浮点数。...
`double`是C++、Java等编程语言中的一种数据类型,它用于表示带有小数部分的数值,通常可以精确到15位十进制数。然而,由于浮点数的二进制表示方式,当进行某些计算或转换时,可能会出现精度丢失的问题。标题提到的...
// 保留两位小数 RoundingMode mode = RoundingMode.HALF_UP; // 四舍五入 BigDecimal roundedBigDecimal = bd.setScale(scale, mode); int roundedNum = roundedBigDecimal.intValue(); ``` 这样,`roundedNum`将...
需要注意的是,在进行除法运算时,如果两个整数相除,结果将是一个整数,且小数部分将被省略。如果要获取小数部分,需要使用浮点型数据。 例如:int a = 10; int b = 3; int c = a / b; // c 的值将是 3 二、关系...
Java计算类是一个专门设计用于进行基本数学运算(加、减、乘、除)以及控制数字格式(四舍五入、保留特定位数的小数)的类。该类使用了Java中的BigDecimal类来确保在处理大数字或者要求精度高的计算时,能够保持计算...
6. **返回结果**:最后,返回转换后的数值,可以是整数或者带有两位小数的浮点数。 在实际项目中,为了提高代码的可读性和可维护性,可以将上述步骤封装成一个独立的函数或类。例如,可以创建一个`...
下面将详细阐述文档中提到的Java编程中应注意的几个关键细节。 1. 数值表达式中的奇偶判断 在Java中,判断一个整数是否为奇数时,应避免使用i%2==1的表达式,因为当整数i为负数时,例如-1%2的结果为-1,这并不是...
5. **格式化输出**:为了使输出的数字具有特定格式,例如保留两位小数,题目中使用了`DecimalFormat`类。如`DecimalFormat gs=new DecimalFormat("#.00");`定义了一个格式对象,然后`gs.format(res)`将结果格式化后...