android-格式化Double并将它放在没有逗号的TextView中(如果需要的话)

问题描述:

我从服务器中获得Double的“price”值,我需要将它放在我的应用程序的TextView中。问题是:当价格= 500时,我得到500.0,因为它是Double。我希望它看起来像500.55或500.50或500 - 如何以正确的方式格式化这些数字? 谢谢。android-格式化Double并将它放在没有逗号的TextView中(如果需要的话)

+0

分割字符串对于'.'然后remove' [1]'位置 –

可以使用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 

Learn more about regular expressions

+2

这应该是完美的答案。 –

+0

这真棒,谢谢! – Den

+0

我很高兴能帮上忙 –

使用String#format方法。

读到它在这里:https://www.dotnetperls.com/format-java 或在JavaDoc

您需要使用方法的intValue()这样明确的将int值:

双d = 5.25; Integer i = d.intValue();

或 double d = 5.25; int i =(int)d;

+1

请添加一个有价值的链接,使其成为更好的答案。 –

+0

@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

使用DecimalFormat

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); 
} 
+0

将无法​​使用值'500.01'将返回'500' –

+0

是的,我需要删除逗号,前提是零后出现。但如果价格= 12.50我需要显示12.50。 – Den

+0

@Den尝试第二个解决方案 – Pantsoffski