【问题标题】:printf in Java SE 8u5 - Printing double to 2 decimal placesJava SE 8u5 中的 printf - 将双精度打印到小数点后 2 位
【发布时间】:2014-05-14 19:19:29
【问题描述】:

我是 Java 新手,并且一直在阅读我的一个朋友让我借的一本书。不过,我相信这本书可能有点过时了。

我正在尝试打印价格,为此本书使用了示例(packPrice 和 packVolume 都是使用 in.nextDouble() 输入的双变量):

double pricePerOunce = packPrice / packVolume;

System.out.printf("Price per ounce: %8.2f", pricePerOunce);
System.out.println();

但是,当我在 Java SE 8u5(Windows 64 位)中尝试完全相同的代码时,我得到了错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The method printf(String, Object[]) in the type PrintStream is not applicable for        
        the arguments (String, double)

有人能解决我的问题吗?如果需要更多信息,请告诉我。

提前致谢!

【问题讨论】:

  • 您使用的是 IDE 吗?如果是这样,它设置为什么语言兼容级别?如果它设置为 1.4 或更低,您将收到此错误消息。 printf 使用可变参数方法,该功能直到 Java 1.5(又名 Java 5)才引入。

标签: java formatting decimal printf


【解决方案1】:

另一种输出具有小数精度的双精度的方法是这样完成的,

double d = 1.234567;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));

这个例子和类似的问题可以在这里找到:set double format with 2 decimal places

【讨论】:

    【解决方案2】:

    Why am I getting a compilation errors with a simple printf?

    “检查您的项目的编译器合规级别是否设置为至少 1.5:

    项目 > 属性 > Java 编译器

    如果未设置启用项目特定设置,请使用该页面上的配置工作区设置...链接检查全局编译器合规性级别。"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多