Java 如何将以点分隔的货币转换为以逗号分隔的数字

Java 如何将以点分隔的货币转换为以逗号分隔的数字,java,format,currency,csv,Java,Format,Currency,Csv,我有以下可能的输入值,以缩写方式表示: 39.44美元 0.523美元 1.336美元 我想将其转换为: 39440000美元 523000美元 1336000美元 我更喜欢使用通用方法,而不是构建奇怪的字符串,因此我尝试使用DecimalFormat(java)对象,尽管我没有得到期望的结果。感谢您的帮助 你是说像这样吗 String[] values = "$39.44,£0.523,€1.336".split(","); for (String value : values) {

我有以下可能的输入值,以缩写方式表示:

  • 39.44美元
  • 0.523美元
  • 1.336美元
我想将其转换为:

  • 39440000美元
  • 523000美元
  • 1336000美元
我更喜欢使用通用方法,而不是构建奇怪的字符串,因此我尝试使用DecimalFormat(java)对象,尽管我没有得到期望的结果。感谢您的帮助

你是说像这样吗

String[] values = "$39.44,£0.523,€1.336".split(",");
for (String value : values) {
    char ccy = value.charAt(0);
    double amount = Double.parseDouble(value.substring(1));
    System.out.printf("%s => %s%,d%n", value, ccy, (int)(amount * 1e6));
}
印刷品

$39.44 => $39,440,000
£0.523 => £523,000
€1.336 => €1,336,000

不要把钱当作替身。有些值对不能用double(或float)表示的货币有效 这似乎是一种合理的技术:

  • 确定要使用多少个零作为填充。存储此值
  • 删除美元符号和所有句号
    org.apache.commons.lang.StringUtils.strip(stringName,“$”)
    将执行此操作
  • 将焊盘填充归零至所需尺寸
  • 使用您想要的任何技术格式化

  • 基本上你所要做的就是用点替换逗号,用逗号替换点

    以下代码将“$2400.25”更改为“$2.400.25”。如果您再次通过此方法发送虚线货币,您将获得逗号版本。这是一个简单的倒置

    public class DotsToCommas {
    
      public static void main(String[] args) {
        String dotCurrency = "$2,400.35";
        String commaCurrency = invertCommasAndDots(dotCurrency);
    
        System.out.println(commaCurrency);
      }
    
      public static String invertCommasAndDots(String dotString) {
        StringBuffer outputBuffer = new StringBuffer();
    
        for (int i = 0; i < dotString.length(); i++) {
          if (dotString.charAt(i) == '.')
            outputBuffer.append(',');
          else if (dotString.charAt(i) == ',')
            outputBuffer.append('.');
          else
            outputBuffer.append(dotString.charAt(i));
        }
    
        return outputBuffer.toString();
      }
    
    }
    
    公共类DotsToCommas{
    公共静态void main(字符串[]args){
    字符串dotCurrency=“$2400.35”;
    字符串commaCurrency=inverseCommasanddots(点货币);
    系统输出打印LN(通信);
    }
    公共静态字符串逗号和点(字符串点字符串){
    StringBuffer outputBuffer=新的StringBuffer();
    对于(int i=0;i
    谢谢大家的建议和计算。我遇到了这个解决方案:

    public class convertMillions {
    
      public static void main(String[] args) {
        String currency = "$";
        char delimiter = ´,´;
        String value = "39.44";   //Example
    
        String commaCurrency = convert(value, currency, delimiter);
        System.out.println(commaCurrency);
      }
    
    
      public String convert(String value, String currency, char delimiter) {
    
         boolean zeroValue = value.isEmpty();
         if(zeroValue)
           return " ";  //Used when String is empty
    
         /*Convert into plain String number*/   
         double amount = Double.parseDouble(value.substring(0));
         String numberStr = String.valueOf((int)(amount * 1e6));
    
         /*Append unit (group separator) delimiter and currency*/
         double number = Double.valueOf(numberStr);
         String pattern = "###,###";
         DecimalFormat formatter;
         DecimalformatSymbols dfs = new DecimalFormatSymbols(Local.US);
         dfs.setGroupingSeparator(delimiter);
    
         formatter = new DecimalFormat(pattern, dfs);
         String cypher = formatter.format(number);      
         String money = currency.concat(cypher);
    
         return money;
    
       }
    }
    
    输入:

    • 39.44
    • 0.523
    • 1.336
    • 七,
    • 125
    输出:

    • 39440000美元
    • 523000美元
    • 1336000美元
    • 700万美元
    • 125000000美元

    请发布您的代码,以便人们可以帮助您修复。输入值是字符串吗?