gpt4 book ai didi

java - 在java中为各种语言环境格式化给定的货币? (四舍五入问题)

转载 作者:行者123 更新时间:2023-12-04 05:02:21 24 4
gpt4 key购买 nike

我正在尝试根据接受语言 header 格式化货币,但遇到了一些麻烦。

  • 英美用户会理解 10,000,000.15 欧元,但不能理解适用于德国的等价物,即 10.000.000,15 欧元
  • 另一方面,对于英美用户来说,“$23,123 看起来”很好,但“$23,123.00”看起来很奇怪。 “JPY23,123.00”也是如此。后者是我使用以下代码得到的:
     java.text.NumberFormat format = java.text.NumberFormat.getCurrencyInstance(java.util.Locale.US);
    format.setCurrency(java.util.Currency.getInstance("JPY"));
  • 更令人不安的是当我在 ja_JP 中显示美元时发生的四舍五入。
    如果我格式化 7.95,它只会显示为“USD8”而不是“USD7.95”

  • 有什么简单的方法可以避免这种情况吗?有没有更好的货币格式库?我是否应该将其格式化为语言环境的数字(如果货币不是语言环境的默认值),然后在前面加上货币代码或符号?

    最佳答案

    默认情况下,10000000.15 欧元打印为 EUR10,000,000.15用于 Locale.US 和 10.000.000,15 €对于 Locale.GERMANY 似乎是正确的。

    但是USD8即使对于日本来说,7.75 美元看起来也很奇怪。但这可以解决:

        NumberFormat format = NumberFormat.getCurrencyInstance(locale);
    format.setCurrency(currency);
    format.setMaximumFractionDigits(currency.getDefaultFractionDigits());
    System.out.println(format.format(7.95));

    它打印 USD7.95适用于日本/美元和 JPY8美元/日元

    关于java - 在java中为各种语言环境格式化给定的货币? (四舍五入问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15982927/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com