Java 中如何将 double 和 float 四舍五入到两位小数?2025年2月12日 | 阅读 6 分钟 在 Java 中将 double 和 float 值四舍五入到小数点后两位,对于处理货币、精确测量或任何需要精确表示浮点数的应用程序来说,都是一个常见的需求。Java 提供了多种方法和类来实现这一点。在这里,我们将详细讨论各种方法,包括使用 BigDecimal 类、DecimalFormat 和其他实用方法。 当我们在变量前面使用 double 数据类型时,它表示小数点后有 15 位数字。但有时我们只需要小数点后两位,例如表示货币单位。因此,在本节中,我们将讨论将double 和 float 四舍五入到小数点后两位的方法,并提供相应的示例和 Java 程序。 ![]() Java 提供了以下三种方法将 double 显示为两位小数:
让我们逐一讨论以上方法。 使用 DecimalFormat 类Java 的 DecimalFormat 是 NumberFormat 类的具体子类,用于格式化十进制数字。该类提供了 setRoundingMode() 方法来将 double 数字显示到小数点后两位。 语法 它接受 rounding mode 作为参数,并覆盖 NumberFormat 类的 setRoundingMode() 方法。如果我们没有指定任何 roundingMode,它会抛出 NullPointerException。下表描述了不同的 rounding modes。
我们还使用了 DecimalFormat 类的另一个方法是 format() 方法。它将一个字符串格式化为另一个字符串。 语法 该方法接受三个参数:number、result 和 position。但最后两个参数是可选的。它返回格式化后的数字字符串。如果 RoundingMode 设置为 UNNECESSARY,该方法会抛出 ArithmeticException。 TwoDecimalPlace1.java 输出 Double Number: 123.9876543567 Double Number: 123.99 Before Rounding: 123.98 After Rounding Up: 123.99 使用 String.format() 方法Java 还提供了 format() 方法来格式化数字。它属于 String 类。通过使用该方法,可以相应地格式化任何数字和字符串。 为了将数字调整到小数点后两位,我们使用 %.2f 来格式化数字。请注意,我们不能在 String.format() 方法中四舍五入数字,它总是采用四舍五入(HALF_UP)。 语法 该方法接受以下两个参数: format: 这是我们想要的格式化字符串。 args: 这些是由格式字符串中的格式说明符引用的参数。 它返回格式化后的字符串。如果格式字符串包含非法语法,则抛出 IllegalFormatException。如果我们将格式指定为 null,它还会抛出 NullPointerException。 TwoDecimalPlace2.java 输出 Double Number: 10.98765432167 Double Number: 10.99 Double Number: 10.99 使用 BigDecimal 类我们还可以使用 Java 的 BigDecimal 类将数字显示到小数点后两位。它扩展了 Number 类并实现了 Comparable<BigDecimal> 接口。BigDecimal 类提供对十进制值进行任意精度算术运算的功能,并且是 java.math 包的一部分。它是 Java 中处理十进制数最精确的方式,尤其是在涉及四舍五入时。 该类提供了 setScale() 方法。语法如下: 语法 该方法接受两个参数: newScale: 要返回的 BigDecimal 值的精度。 roundingMode: 我们要应用的四舍五入模式。 它返回一个精度为指定值且未标度值通过将此 BigDecimal 的未标度值乘以或除以适当的十的幂来确定的 BigDecimal,以保持其整体值。 如果 RoundingMode 设置为 UNNECESSARY,该方法将抛出 ArithmeticException。RoundingMode 是一个枚举,提供了上面讨论的 RoundingMode。 我们在程序中使用的另一个方法是 BigDecimal.doubleValue()。它将 BigDecimal 转换为 double 数。让我们看一个示例。 TwoDecimalPlace3.java 输出 Double Number: 12.4565652239 Up to two decimal places: 12.46 使用 Math.round() 方法Math.round() 方法可以四舍五入浮点数,但它四舍五入到最近的整数。要四舍五入到两位小数,需要进行一些操作。 文件名:RoundUsingMathRound.java 输出 Rounded value: 123.46 使用自定义实用方法自定义实用方法可以将上述方法结合起来,用于可重用代码。 文件名:RoundUtility.java 输出 Rounded value: 123.46 方法比较
性能考虑
四舍五入浮点数的常见错误
结论在 Java 中将浮点数四舍五入到小数点后两位可以通过多种方法实现,每种方法都有其用例和权衡。对于大多数应用程序,BigDecimal 提供了最精确的四舍五入控制,而 DecimalFormat 和 String.format 则提供了方便的数字显示格式化方式。理解和选择正确的方法取决于您应用程序的特定需求,尤其是在精度和性能方面。 下一主题Java 8 Multimap |
什么是平台?程序运行的环境称为平台。环境包括软件、硬件、库和依赖项。平台独立性是什么意思?当一种编程语言无需任何修改或调整即可在不同操作系统上运行时,称为平台独立性。...
阅读 4 分钟
A 是一个访问修饰符。它可以分配给变量、方法、构造函数和类。它是最不受限制的访问修饰符类型。要点:公共访问修饰符在任何地方都可访问。因此,我们可以轻松地在类内部和外部访问公共...
阅读 3 分钟
Tribonacci 级数与 Fibonacci 级数相似。Tribonacci 序列是 Fibonacci 序列的推广,其中每个项是前三项的总和。Tribonacci 级数 Tribonacci 序列或级数是一系列整数,其中每个项从...
阅读 2 分钟
给我们一个整数计数,与一个由小写英文字母组成的字符串 'str' 相关联。此特定问题的目标是查找“相等计数子串”。当子串中的每个不同字母都出现恰好 count 次时,该子串称为...
阅读 6 分钟
技术日新月异。有时,我们需要定期在服务器上执行作业。在服务器上手动运行作业是一项困难的任务,用户或管理员无法多次完成。为了...
阅读 8 分钟
每个国家都有自己的手机号码格式。要验证每个国家的手机号码非常困难。因此,在本节中,我们将学习如何使用正则表达式和 Google 的 libphonenumber API 在 Java 中验证手机号码。在本节中,我们将创建一个 Java...
阅读 4 分钟
?在 Java 中,ArrayList 是一个广泛使用的数据结构,允许动态调整元素大小。当涉及到显示 ArrayList 的内容时,默认行为是用方括号括起来打印元素。但是,在某些情况下,您可能想要...
5 分钟阅读
Java 作为一种面向对象的编程语言,提供了在其他类内部定义类的能力。这种概念允许更好地组织和封装代码。在此上下文中经常出现的两个术语是嵌套类和内部类。虽然它们有关联,但它们服务于...
阅读 4 分钟
我们得到一个包含非负数的数组。此外,还给出一个数字 K。我们的任务是计算给定数组中元素的对数,其中对中元素的 OR 运算结果大于 K。示例 1:输入 int...
阅读 6 分钟
JDK 8 引入了 DoublePredicate 接口。一个名为 DoublePredicate (java.util.function.DoublePredicate) 的函数式接口在其内部指定了三个默认方法和一个抽象方法。这个接口是 Predicate 接口的一个更专业的版本。因为它只有一个抽象方法 test (double value)...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India