【问题标题】:1/10 returns value 0 but if we take modulus 1%10, it returns 1? [duplicate]1/10 返回值 0 但如果我们取模数 1%10,它返回 1? [复制]
【发布时间】:2022-01-04 06:35:37
【问题描述】:

算术除法运算符 / 返回商,而算术模运算符 % 返回余数。使用除法运算符时返回0值而模运算符%返回1的原因可能是什么原因。表达式为1/10和1%10。

  • 注意:我使用的是整数数据类型:“int”

【问题讨论】:

    标签: java operators


    【解决方案1】:

    嗯,这与编码无关。 我们可以通过解决基本数学来简单地理解它。 众所周知:

    Dividend / Divisor == > we get 2 Answers 
              Quotient and Remainder
    

    如果余数为0,则Dividend完全除以Divisor 部分商。

    在您建议的示例中, 1/10 实际答案是 0.1,这是一个浮点数,

    在您的 Java 代码中,您必须寻找整数值,这实际上是不可能的。

    很明显,1%10 会给你 1, 作为除数的 10 不能除以 1 作为被除数。

    您可以尝试使用浮点变量。我希望你能得到预期的结果。

    【讨论】:

      【解决方案2】:

      就像你说的模数返回除法的剩余部分。

      例如:

      1 % 10 = 0 R 1

      15 % 10 = 1 R 5

      而 1 / 10 返回 0,因为您只使用整数。如果您不使用浮点数,则它不会返回 1 并舍入结果。

      所以如果你想要一个浮点数,你需要这样的东西:

          System.out.println(1 / 10); // -> 0
          
          System.out.println((float) 1 / 10);   // -> 0.1 //You can also use double for casting
          System.out.println(1.0 / 10);         // -> 0.1
          System.out.println(1 / 10.0);         // -> 0.1
          System.out.println(1.0 / 10.0);       // -> 0.1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多