在Objective C中,我一直在使用此代码来格式化值,以便具有零小数的值将不写入小数,具有小数的值将写入一个小数:
CGFloat value = 1.5;
return [NSString stringWithFormat:@"%.*f",(value != floor(value)),value];
//If value == 1.5 the output will be 1.5
//If value == 1.0 the output will be 1
我需要为Java中的双精度值做同样的事情,我尝试了以下操作,但这不起作用:
return String.format("%.*f",(value != Math.floor(value)),value);
看看如何打印不带逗号的Double。这肯定会给你一些启发。
正确地,这将做
DecimalFormat.getInstance().format(1.5)
DecimalFormat.getInstance().format(1.0)
你的意思是?
return value == (long) value ? ""+(long) value : ""+value;
不确定如何使用String.format("..")方法,但您可以使用java.text.DecimalFormat实现相同的功能;请看下面的代码示例:
import java.text.NumberFormat;
import java.text.DecimalFormat;
class Test {
public static void main(String... args) {
NumberFormat formatter = new DecimalFormat();
System.out.println(formatter.format(1.5));
System.out.println(formatter.format(1.0));
}
}
输出分别为1.5和1