【问题标题】:Java Double/IntegerJava 双/整数
【发布时间】:2012-08-24 08:12:13
【问题描述】:
int a = 1;
int b = 10;
int c = 3;

int d = (1/10)*3

System.out.println(d)

Result: 0

我如何使这个计算工作? 向上还是向下取整? 它应该是: (1/10)*3 = 0.1 * 3 = 0.3 = 0 和 (4/10)*3 = 0.4 * 3 = 1.2 = 1

非常感谢!

【问题讨论】:

  • OP,请接受您的回答,而不是在问题中添加消息。单击答案左侧的灰色复选标记。这向所有人表明问题确实得到了回答,并且您对答案感到满意。

标签: java math int double


【解决方案1】:
1 / 10

这是整数除法,整数除法的结果是 0。 那么 0 * 3 = 0

您可以使用双字面值:

1.0 / 10.0

【讨论】:

【解决方案2】:

试试:

int d = (int) (((double)4/10)*3);

【讨论】:

    【解决方案3】:

    1/10

    这一行返回 0.so 0*3=0。使用 double 而不是 int

    【讨论】:

    • 如果需要,然后将其转换回或舍入为 int。
    • 这行不通 - 1/10 仍然是整数除法,所以结果又是 0(双精度型)
    【解决方案4】:

    因为 a 和 b 都是整数,所以输出也将是 int,这使得 1/10 为 0,然后 0*3=0

    【讨论】:

      【解决方案5】:

      您将希望使用浮点表示来执行计算。然后您可以将结果转换回整数。

      【讨论】:

        【解决方案6】:

        我注意到您在问题中提到向上/向下舍入

        Math.round() 会在这里为您提供帮助。

        返回最接近参数的long。结果四舍五入为 整数加 1/2,取结果的下限,然后转换 结果输入 long。

        【讨论】:

          【解决方案7】:

          这行得通

          int a = 1;
          int b = 10;
          int c = 3;    
          int d = (1*3/10);    
          System.out.println(d);
          

          【讨论】:

            猜你喜欢
            • 2020-10-11
            • 1970-01-01
            • 1970-01-01
            • 2014-11-10
            • 1970-01-01
            • 2023-03-28
            • 2016-11-06
            • 1970-01-01
            • 2017-10-17
            相关资源
            最近更新 更多