Android: 使用双精度值进行字符串格式化

23

我需要使用Formatter创建一个字符串来显示一些双精度浮点值。我不太清楚如何编写它。这是我的代码:

Double dWeightInKg = 100;
Double dWeightInLbs = 220:
String headerText = String.format("%.0f kg / %.0f lbs",Double.toString(dWeightInKg) , Double.toString(dWeightInLbs));
我正在寻找以下输出:
100 kg / 220 lbs
我在 String.format 行中遇到了运行时异常 - badArgumentType(formater)。
3个回答

40

%.0f是浮点数的格式化字符串,保留0位小数。

您传递给String.format的值为String, String,但需要传递Double, Double。

您不需要将双精度浮点数转换为字符串。

String headerText = String.format("%.0f kg / %.0f lbs", dWeightInKg, dWeightInLbs);

谢谢您的回复。我应该知道得更好! - wyoskibum
1
此外,您将看到提示,应明确确定 String.format() 的语言环境。避免忽略此提示可能会导致应用程序中的错误。更多信息请参见:https://developer.android.com/reference/java/util/Locale.html#default_locale - excelsiorious

10

这应该可以工作,

DecimalFormat df = new DecimalFormat("#.##");
private String convertToFormat(double value){

    return df.format(value);
}

谢谢您的回复。其实这只是一些简单的东西。 - wyoskibum

2
您不需要使用 Double.ToString(),因为您的格式化程序已经期望一个数字。请尝试这样做:
String headerText = String.format("%.0f kg / %.0f lbs", dWeightInKg , dWeightInLbs);

谢谢回复。在提问之前我应该先睡一晚上!! - wyoskibum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接