我遇到了双重(小数)这个问题
当double = 1.234567然后我使用String.format("%.3f", myString);
结果是1.234
但是当我的双倍是10
结果将是10,000
我希望这是10
他们是否可以说他只需要在“有用”时显示小数?
我看到一些关于此的帖子,但那是php或c#,找不到关于android / java的东西(也许我看起来不太好)。
希望你们能帮我解决这个问题。
编辑,现在我使用类似这样的内容:myString.replace(",000", "");
但我认为他们的代码更加“友好”。
答案 0 :(得分:77)
带有#参数的DecimalFormat是要走的路:
public static void main(String[] args) {
double d1 = 1.234567;
double d2 = 2;
NumberFormat nf = new DecimalFormat("##.###");
System.out.println(nf.format(d1));
System.out.println(nf.format(d2));
}
将导致
1.235
2
答案 1 :(得分:2)
不要使用双打。你可能会失去一些精确度。这是一个通用功能。
public static double round(double unrounded, int precision, int roundingMode)
{
BigDecimal bd = new BigDecimal(unrounded);
BigDecimal rounded = bd.setScale(precision, roundingMode);
return rounded.doubleValue();
}
您可以使用
进行调用round(yourNumber, 3, BigDecimal.ROUND_HALF_UP);
“precision”是您想要的小数点数。
答案 2 :(得分:0)
试一试
double amount = 1.234567 ;
NumberFormat formatter = new DecimalFormat("##.###");
System.out.println("The Decimal Value is:"+formatter.format(amount));