将尾随 0 添加到我的 0.1、0.2 值,但不添加到我的 0.25 值

Adding a trailing 0 to my 0.1, 0.2 values, but not to my 0.25 values

我有一个从外部方法调用中提取的双精度值。当 0.6 值出现时,我希望将其更改为 0.60,但我不想在字符串末尾放置“0”,否则它会使我的 0.65 值变为 0.650。

我之前遇到过一个问题,它把 1.95 显示为 195000001,但我已经解决了这个问题。

double convPrice = callMethod.totalPriceMethod(); //Calls value from external method and adds to local variable.

totalPrice = Double.toString(convPrice); //local variable is converted to String
totalPrice = String.format("£%.2f", totalPrice ); //Formatting is applied to String
totalPriceLabel.setText(totalPrice); //String is added to JLabel.

如有任何帮助,我们将不胜感激。

只需对浮点数使用 String.format 格式说明符:

String.format("%.2f", yourNumber)

教程位于:Formatting tutorial

或者使用 DecimalFormat 对象。


例如,

  String s = String.format("%.2f", 0.2);
  System.out.println(s);

不要将 double 转换为 String 预格式化,因为这是格式化的目的。你这样做

double convPrice = callMethod.totalPriceMethod();
totalPrice = Double.toString(convPrice); 
totalPrice = String.format("£%.2f", totalPrice ); 
totalPriceLabel.setText(totalPrice); 

当你想做这样的事情时:

double convPrice = callMethod.totalPriceMethod();
// totalPrice = Double.toString(convPrice);  // ???????
totalPrice = String.format("£%.2f", convPrice); 
totalPriceLabel.setText(totalPrice); 

由于您要转换为货币,使用 NumberFormat currencyInstance 可能更好。

例如,

  NumberFormat currencyInstance = NumberFormat.getCurrencyInstance(Locale.UK);
  double convPrice = callMethod.totalPriceMethod();
  totalPriceLabel.setText(currencyInstance.format(convPrice));