【问题标题】:Making my variable display the correct decimal place使我的变量显示正确的小数位
【发布时间】:2014-03-04 00:33:51
【问题描述】:

我正在做一个简单的家庭作业,但我的计算有问题。 我的计算器的答案是 4.83,但我的编译器显示的是 4.00。如何纠正这个? 这是我遇到困难的部分。

double test = 29/6;
 System.out.printf("%.2f",test);
 System.out.println(test);

【问题讨论】:

  • 这真是电脑最烦人的地方。每个人都希望默认数字是一个浮点数,因为它是一个整数,所以我们每天都有 1 个关于堆栈溢出的问题 :-) [不是谁问的问题,IMO - 这真的不直观。]
  • @Leo - 我认为这是因为最优性。计算双精度比计算整数慢得多。
  • @libik 我很确定这是出于性能原因,我理解这一点。不过,我认为这很烦人:-)

标签: java average


【解决方案1】:

如果你将两个integers 相除,结果总是integer

您必须将一个数字从int 转换为double

 double test = (double)29/6;
 System.out.printf("%.2f",test);
 System.out.println(test);

注意,如果只写数字,则视为int

重要的是,下面的代码也打印4.00

 double test = (double)(29/6);
 System.out.printf("%.2f",test);
 System.out.println(test);

因为它首先将两个整数相除,所以结果也是整数,然后它被强制转换为双精度。

使用(double)29/6((double)29)/6 相同,因为转换具有更高的优先级。

【讨论】:

    【解决方案2】:

    因为除法的两个操作数都是int,所以整个结果被截断为int。使操作数 double 像这样,一切正常。

    double test = 29.0/6.0;
    

    【讨论】:

      【解决方案3】:

      它进行整数除法,将所有内容截断到小数点右侧,因此得到 4。

      试试下面的:

      double test = 29.0/6;             
          System.out.printf("%.2f",test);
          System.out.println(test);
      

      输出:

      4.83
      4.833333333333333
      

      【讨论】:

        猜你喜欢
        • 2021-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多