String.format() 和 DecimalFormat 实际上没有格式化
Posted
技术标签:
【中文标题】String.format() 和 DecimalFormat 实际上没有格式化【英文标题】:String.format() and DecimalFormat not actually formatting 【发布时间】:2016-07-29 04:48:33 【问题描述】:我尝试了两种不同的方法来格式化一些数字,以显示类似于钱,所以显示为小数点后 2 位。 但是,我尝试将 EditText 字段设置为
EditText.setText (String.format("%.2f, number))
还有:
DecimalFormat precision = new DecimalFormat("0.00");
EditText.setText(String.valueOf(precision.format(number));
两者似乎都没有做任何事情,一切仍然默认设置为小数点后 1 位,即)30.0,如果有其他任何设置,它将达到 3 位或更多小数位,即)30.243
【问题讨论】:
没有得到你的问题和你想要什么。?? 我认为你的代码是正确的,请仔细检查 【参考方案1】:@梅森理查森
您是否尝试过 setMinimumFractionDigits()
为您的价值设置最小分数
DecimalFormat precision = new DecimalFormat("#.##");
dec.setMinimumFractionDigits(2);
EditText.setText(String.valueOf(precision.format(number));
【讨论】:
【参考方案2】:如果要将 5.00 显示为 5 和 5.10 显示为 5.1,请使用:
DecimalFormat formater = new DecimalFormat("#.##");
如果您想将 5.00 显示为 5.00 和 5.10 显示为 5.10,请使用:
DecimalFormat formater = new DecimalFormat("#.00");
【讨论】:
【参考方案3】:试试这个
DecimalFormat precision = new DecimalFormat("0.##");
edittext.setText(precision.format(number));
【讨论】:
【参考方案4】:试试这个,
double rews = 100.89478;
String ada = new DecimalFormat("##.##").format(rews);
System.out.println(ada);
输出
100.89
这里是.##
,所以它会给出 2 个小数点。如果要添加 3 表示使用 .###
。
【讨论】:
【参考方案5】:您的代码似乎正确,但是请看这里,
System.out.printf("Floating point number with 2 decimal digits: %.2f\n",1.21312939123);
System.out.printf("Floating point number with 3 decimal digits: %.3f\n",1.21312939123);
System.out.printf("Floating point number with 8 decimal digits: %.8f\n",1.21312939123);
System.out.printf("String: %s, integer: %d, float: %.6f", "Hello World",89,9.231435);
输出:
Floating point number with 2 decimal digits: 1.21
Floating point number with 3 decimal digits: 1.213
Floating point number with 8 decimal digits: 1.21312939
String: Hello World, integer: 89, float: 9.231435
【讨论】:
以上是关于String.format() 和 DecimalFormat 实际上没有格式化的主要内容,如果未能解决你的问题,请参考以下文章
hausaufgabe--python 15- String Format
C# Decimal.parse的问题。有字符串 3.10 如何转换成decimal时不会变成3.1。我需要的是完整的3.10