android-格式化Double并将它放在没有逗号的TextView中(如果需要的话)
我从服务器中获得Double
的“price”值,我需要将它放在我的应用程序的TextView中。问题是:当价格= 500时,我得到500.0,因为它是Double
。我希望它看起来像500.55或500.50或500 - 如何以正确的方式格式化这些数字? 谢谢。android-格式化Double并将它放在没有逗号的TextView中(如果需要的话)
可以使用rexgex
做格式化
1)创建一个乐趣ction识别下列条件
如果精度值只包含零,然后截断这些
-
如果小数点后任何非零值,则返回原始值
public String formatValue(double d){ String dStr = String.valueOf(d); String value = dStr.matches("\\d+\\.\\d*[1-9]\\d*") ? dStr : dStr.substring(0,dStr.indexOf(".")); return value; }
\\d+\\.\\d*[1-9]\\d*
:匹配一个或多个数字然后输入.
-
\\d*[1-9]\\d*
:匹配一个非零值
测试用例
yourTextView.setText(formatValue(500.00000000)); // 500
yourTextView.setText(formatValue(500.0001)); // 500.0001
yourTextView.setText(formatValue(500)); // 500
yourTextView.setText(formatValue(500.1111)); // 500.1111
您需要使用方法的intValue()这样明确的将int值:
双d = 5.25; Integer i = d.intValue();
或 double d = 5.25; int i =(int)d;
请添加一个有价值的链接,使其成为更好的答案。 –
@YagamiLight当然。 http://javarevisited.blogspot.com/2017/01/how-to-convert-double-to-int-in-java.html http://www.studytonight.com/java/type-casting- in-java – ZaidBinAsif
double price = 500.0;
DecimalFormat format = new DecimalFormat("0.###");
System.out.println(format.format(price));
编辑
好,比尝试不同的东西:
public static String formatPrice (double price){
if (price == (long) price)
return String.format("%d", (long) price);
else
return String.format("%s", price);
}
将无法使用值'500.01'将返回'500' –
是的,我需要删除逗号,前提是零后出现。但如果价格= 12.50我需要显示12.50。 – Den
@Den尝试第二个解决方案 – Pantsoffski
分割字符串对于'.'然后remove' [1]'位置 –