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