【问题标题】:Java: Format double with decimalsJava:用小数格式化双精度
【发布时间】:2011-05-05 09:20:24
【问题描述】:

在 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);

【问题讨论】:

标签: java objective-c formatting double decimal


【解决方案1】:

看看how to print a Double without commas。这肯定会给你一些想法。

确实如此

DecimalFormat.getInstance().format(1.5)
DecimalFormat.getInstance().format(1.0)

【讨论】:

  • 谢谢!是否可以为此设置最大小数?那么例如 1.425 将显示为 1.5?
  • Martin,那么你应该在格式化之前使用Math.floor()Math.round()——因为它不再是关于格式化了。
【解决方案2】:

你的意思是类似的吗?

return value == (long) value ? ""+(long) value : ""+value;

【讨论】:

    【解决方案3】:

    不确定如何使用 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      • 2011-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      相关资源
      最近更新 更多