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.0f 或 10.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,输出为 $。