如何使2个整数的除法产生一个浮点而不是另一个整数?

phi*_*ill 138 java

在计算速度的另一个Bruce Eckels练习中,v = s / ts和t是整数.我如何制作它以便分裂曲柄浮出水面?

class CalcV {
  float v;
  float calcV(int s, int t) {
    v = s / t;
    return v;
  } //end calcV
}

public class PassObject {

  public static void main (String[] args ) {
    int distance;
    distance = 4;

    int t;
    t = 3;

    float outV;

    CalcV v = new CalcV();
    outV = v.calcV(distance, t);

    System.out.println("velocity : " + outV);
  } //end main
}//end class
Run Code Online (Sandbox Code Playgroud)

Aln*_*tak 285

首先将两个操作数中的一个转换为浮点数.

v = (float)s / t;
Run Code Online (Sandbox Code Playgroud)

演员阵容的优先级高于分区,因此在分组之前发生.

另一个操作数将由编译器有效地自动转换为浮点数,因为规则说如果任一操作数是浮点类型,则操作将是浮点操作,即使另一个操作数是整数. Java语言规范,§4.2.4§15.17

  • Grrr,这花了我大约30分钟,直到我发现这一点,并想出来.很简单.:d (8认同)
  • (对于后来遇到此问题的任何人,给定的链接都会被破坏.新的链接是:http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.2. 4和http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.17) (5认同)

ani*_*era 11

尝试:

v = (float)s / (float)t;
Run Code Online (Sandbox Code Playgroud)

将整数注入浮点数将允许进行浮点除法.

但是你真的只需要施放一个.


Jas*_*oco 5

将整数之一转换为浮点数以强制使用浮点数学完成运算。否则整数数学总是首选。所以:

v = (float)s / t;
Run Code Online (Sandbox Code Playgroud)