我正在尝试动态显示字符串中的数字,所以如果数字有十进制显示它们但是如果不显示.0
示例:将5.5显示为5.5,将5.0显示为5
这是我到目前为止:(答案是双倍的)
double temp = answer;
long temp2 = (long) temp;
if (temp == temp2) {
output = String.valueOf(temp2);
System.out.println(output);
这项工作很好,大约1e18然后会因为Long的最大大小而错误。 那么我如何在5.43e86等更大的数字上实现这一目标呢?
答案 0 :(得分:23)
double answer = 5.0;
DecimalFormat df = new DecimalFormat("###.#");
System.out.println(df.format(answer));
答案 1 :(得分:2)
DecimalFormat建议是处理此问题的最简单方法。如果它们还不够,这是另一个想法。
如果您开始达到Java中基元可以表示的最大值,那么您可能需要转到BigInteger和BigDecimal。
尝试在BigDecimal和BigInteger上使用BigDecimal.toBigInteger()
方法和toString()
方法。
答案 2 :(得分:0)
这不是好解决方案 例如,如果使用新的DecimalFormat(“0。#”),则缺少数据 PI = 3.14,但在解析之后你会发现3.1
使用eval%1的另一种解决方案? (int)d:d 这次couse最大整数限制,再次缺少数据
我的解决方案正在运作,但这不是一个好主意
res = removeLastChars(eval,".0");
private String removeLastChars(double eval, String text){
String res = String.valueOf(eval);
int length = text.length();
if (res.length() > length){
res = res.substring((res.length() - length), res.length()).equals(text)
? res.substring(0, (res.length() - length)) : res;
}
return res;
}
答案 3 :(得分:-4)
看看 http://download.oracle.com/javase/6/docs/api/java/text/DecimalFormat.html
你只需要DecimalFormat(“0.0”)