How to make the division of 2 ints produce a float instead of another int?

后端 未结 9 1159
天命终不由人
天命终不由人 2020-11-22 08:24

In another Bruce Eckels exercise in calculating velocity, v = s / t where s and t are integers. How do I make it so the division cranks out a float?

         


        
9条回答
  •  南方客
    南方客 (楼主)
    2020-11-22 08:58

    JLS Standard

    JLS 7 15.17.2. Division Operator / says:

    Integer division rounds toward 0. That is, the quotient produced for operands n and d that are integers after binary numeric promotion (§5.6.2) is an integer value q whose magnitude is as large as possible while satisfying |d · q| ≤ |n|. Moreover, q is positive when |n| ≥ |d| and n and d have the same sign, but q is negative when |n| ≥ |d| and n and d have opposite signs.

    This is why 1/2 does not give a float.

    Converting just either one to float as in (float)1/2 suffices because 15.17. Multiplicative Operators says:

    Binary numeric promotion is performed on the operands

    and 5.6.2. Binary Numeric Promotion says:

    • If either operand is of type double, the other is converted to double.
    • Otherwise, if either operand is of type float, the other is converted to float

提交回复
热议问题