Java 将 long 转换为 currency

标签 java currency long-integer number-formatting

我无法将长整数(美分)转换为货币格式。

我的代码:

long doublePayment = 1099;  //Should equal $10.99
DecimalFormat dFormat = new DecimalFormat();
String formattedString = dFormat.format(doublePayment);
System.out.println(formattedString);

输出:1,099

我也试过:

long doublePayment = 1099;
NumberFormat n = NumberFormat.getCurrencyInstance(Locale.US); 
String s = n.format(doublePayment);
System.out.println(s);

因为这是美分,所以输出应该是 10.99 或 10.99 美元。

无法弄清楚我做错了什么。谢谢!!!

最佳答案

如果您需要很长时间才能开始,您仍然应该使用 java.math.BigDecimal。

    long doublePayment = 1099;
    BigDecimal payment = new BigDecimal(doublePayment).movePointLeft(2);
    System.out.println("$" + payment); // produces: $10.99

再一次大声说出来:永远不要使用浮点变量来存储货币/货币值(value)。

关于Java 将 long 转换为 currency,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12560629/

相关文章:

java - 如何使用键盘快捷键在 Intellij-IDEA 中显示(展开)隐藏(折叠)的代码?

java - 在 Java 中使用货币符号解析价格

c# - 使用精度为 18 点的指数和绝对值 C#

java - 将 MD5 转换为长

sql - 将 LONG 转换为 VARCHAR2 或某种文本数据类型

java - 复选框状态下的 TreeView 传输

java - 为什么string.matches ["+-*/"]会报模式异常?

java - 悬停时显示单词含义,可用作 MT 系统的后期编辑工具

ruby-on-rails - 在 Rails 中以美分存储价格

c# - 货币转换器 Web 服务