Java 使用setText(String.valueOf)格式化(货币)

Java 使用setText(String.valueOf)格式化(货币),java,formatting,Java,Formatting,在我的代码中,有一些对方法的调用,该方法设置了一些JTextFields的值 fields[7].setText(String.valueOf(inv.get(currentDisplay).feeValue())); 这是可行的,它正在做我想要的事情,但是值看起来像81.65849999999 如何使String.valueOf的输出看起来像的正常输出 System.out.printf( "$%,.2f", getDollarAmount() ) 使用类。下面是一个我认为会有帮助的例子

在我的代码中,有一些对方法的调用,该方法设置了一些JTextFields的值

fields[7].setText(String.valueOf(inv.get(currentDisplay).feeValue()));
这是可行的,它正在做我想要的事情,但是值看起来像81.65849999999

如何使String.valueOf的输出看起来像的正常输出

System.out.printf( "$%,.2f", getDollarAmount() ) 
使用类。下面是一个我认为会有帮助的例子。以下是示例链接中的代码:

import java.text.NumberFormat;

public class Mortgage {
  public static void main(String[] args) {
    double payment = Math.random() * 1000;
    System.out.println("Your payment is ");
    NumberFormat nf = NumberFormat.getCurrencyInstance();
    System.out.println(nf.format(payment));
  }
}
我唯一要提醒的是,它确实会进行舍入-您可以使用一些方法来调整此值…

使用类。下面是一个我认为会有帮助的例子。以下是示例链接中的代码:

import java.text.NumberFormat;

public class Mortgage {
  public static void main(String[] args) {
    double payment = Math.random() * 1000;
    System.out.println("Your payment is ");
    NumberFormat nf = NumberFormat.getCurrencyInstance();
    System.out.println(nf.format(payment));
  }
}
我唯一要提醒的是,它确实会进行舍入-您可以使用一些方法来调整它…

使用:

locale = Locale.CANADA;
String str = NumberFormat.getCurrencyInstance(locale).format(123.45);
//output: $123.45
备选方案:

NumberFormat formatter = new DecimalFormat("'$'###.00");
String str = formatter.format(getDollarAmount()); 
参考资料:

使用:

locale = Locale.CANADA;
String str = NumberFormat.getCurrencyInstance(locale).format(123.45);
//output: $123.45
备选方案:

NumberFormat formatter = new DecimalFormat("'$'###.00");
String str = formatter.format(getDollarAmount()); 

参考资料:

NumberFormat完成了此项工作。谢谢NumberFormat完成了这项工作。谢谢