HOWTO · Java

Java 中的货币格式

本文介绍 Java 中的货币格式。

以下是我们可以在 Java 中将货币转换为所需值的一些方法。

在 Java 中使用逻辑函数转换货币

public class CurrencyConversion {
  public static void main(String[] args) {
    double currency_value = 10.9897;
    float epsilon = 0.004f;
    if (Math.abs(Math.round(currency_value) - currency_value) < epsilon) {
      System.out.printf("%10.0f", currency_value);
    } else {
      System.out.printf("%10.2f", currency_value);
    }
  }
}

在上面的 CurrencyConversion 代码中,有一个变量 currency_value,以十进制格式保存货币值。epsilon 是另一个具有不同值的变量。该值可以是对其差值执行一些逻辑运算的任何浮点数。if 语句逻辑被定义为取舍入数与实际数之差的绝对值。将绝对值与 epsilon 值进行比较。该程序使用函数 Math.abs() 将十进制值的实际差值转换为零或大于零。

根据条件语句的输出,它以 10.0f10.2f 格式打印。给定的两种格式说明符表示,整数部分为 10,这意味着整个字符串包含十个字符。小数部分指定格式直到 2 小数位。

在下面的控制台日志中,它打印了最多 2 个小数位的绝对转换值。

10.99  //10.9897
10	   //10
10	   //10.0008

在第一种情况下,当货币值为 10.9897 时,它会四舍五入为 10.99。此外,当货币值更改为 10 时,输出仍然返回 10,因为输入货币没有任何舍入。当货币值更改为 10.0008 时,金额将四舍五入为 10 值。

在 Java 中使用 NumberFormat 类转换货币

import java.text.NumberFormat;

public class CurrencyConversion {
  public static void main(String[] args) {
    double money = 100.1;
    NumberFormat formatter = NumberFormat.getCurrencyInstance();
    String moneyString = formatter.format(money);
    System.out.println(moneyString);
  }
}

上面的代码块使用调用静态方法 getCurrencyInstance 函数的 NumberFormat 类。该方法在默认语言环境中返回格式的货币格式。它还需要一个 locale 值来指定一个区域。并且货币实例可以是基于定义的区域或区域的 Rupees``Dollar 格式。现在格式化程序实例用于调用格式化方法。format 方法接受一个参数 double money 并返回一个 String 值。当舍入不正确时,该函数可能会抛出 ArithmeticException

上面的代码创建了以下输出。

Rs.100.10

但是当语言环境值不同时,它可能会有所不同。当语言环境值为 Locale.CHINA 时,输出是 。或者当 Locale 为 Locale.CANADA,输出为 $