android - 格式化 Double 并将其放入 TextView 中,不带逗号(如果需要)

Posted

技术标签:

【中文标题】android - 格式化 Double 并将其放入 TextView 中,不带逗号(如果需要)【英文标题】:android - Format Double and put it in TextView without comma (if needed) 【发布时间】:2017-07-06 12:32:42 【问题描述】:

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

【问题讨论】:

相对于. 拆分字符串,然后删除[1] 位置 【参考方案1】:

您可以使用rexgex 进行格式化

1.) 创建一个函数来识别以下条件

如果精度值仅包含零,则截断它们

如果小数点后有非零值则返回原值

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】:

使用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);

【讨论】:

【参考方案3】:

使用 String#format 方法。

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

【讨论】:

【参考方案4】:

您需要像这样使用 intValue() 方法显式获取 int 值:

双 d = 5.25; 整数 i = d.intValue();

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

【讨论】:

@YagamiLight 当然。 javarevisited.blogspot.com/2017/01/…studytonight.com/java/type-casting-in-java

以上是关于android - 格式化 Double 并将其放入 TextView 中,不带逗号(如果需要)的主要内容,如果未能解决你的问题,请参考以下文章

Android double保留两位小数:截取 和 四舍五入

如何在Android中将double转换为int? [复制]

在 Storyboard 或 .xib 上拖动对象始终将其放在下面的对象内。为啥?

text 从S3获取JSON对象,将其解析为CSV,然后将其放回S3

python 从发电机获取第一个项目,但将其放回原来使原始发电机完好无损。

Spark SQL 用于从两个不同的查询中划分计数并将输出存储为 Double