用小数格式化双精度



在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

相关内容

  • 没有找到相关文章

最新更新