Wie man die division von 2 Ganzzahlen erzeugen ein schweben anstatt eines anderen int?
In einem anderen Bruce Eckels übung in der Berechnung von Geschwindigkeit, v = s /t
wo s und t ganze zahlen sind. Wie mache ich es, sodass die division Kurbeln aus einem Schwimmer?
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
float v=s/t führt die division dann wandelt das Ergebnis in einen float. float v=(float)N/t-casts auf float dann führt die division.
InformationsquelleAutor phill | 2009-04-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur Darsteller einer der beiden Operanden ein float-ersten.
Den cast hat Vorrang vor der Teilung, so erfolgt vor der Teilung.
Wird der andere operand wird mit wirksam werden automatisch umgewandelt, ein schweben durch den compiler, da die Regeln sagen, dass, wenn einer der Operanden von floating-point-Typ, dann wird die Bedienung, eine floating-point-operation, auch wenn der andere operand ist ein integraler Bestandteil. Java Language Specification, §4.2.4 und §15.17
Mehr spezifisch, diese Besondere Regel wird hier erwähnt: Multiplikative Operatoren, so lassen Sie es stehen hier für die Zukunft auf.
(Für jemand kommen, über diese Frage später die angegebenen links sind gebrochen. Die neuen sind: docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.2.4 und docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.17)
danke - Antwort links aktualisiert.
InformationsquelleAutor Alnitak
Versuchen:
Casting die ints, floats zulassen wird die floating-point division stattfinden.
Sie brauchen wirklich nur zu wirken, wenn.
InformationsquelleAutor anisoptera
Zur Verringerung der Auswirkungen auf die code readabilty, würde ich vorschlagen:
InformationsquelleAutor space programmer
Wirken des integers zu einem float zu zwingen, die operation zu tun, mit " floating point math. Ansonsten integer-Mathematik ist immer bevorzugt. Also:
InformationsquelleAutor Jason Coco
Können Sie werfen auch nur einer von Ihnen, aber für die Konsistenz Sie wollen, kann explizit umgewandelt werden beide so etwas wie v = (float)I /(float)t, sollte funktionieren.
InformationsquelleAutor Uri
Können Sie werfen den Zähler oder Nenner zu schweben...
int-Operationen in der Regel wieder int, also müssen Sie ändern eine der operanding zahlen.
InformationsquelleAutor Jhonny D. Cano -Leftware-
JLS Standard
JLS 7 15.17.2. Divisionsoperator / sagt:
Dies ist der Grund, warum
1/2
nicht einen float.Umwandlung nur mit einem Schwimmer, wie in
(float)1/2
genügt, weil 15.17. Multiplikative Operatoren sagt:und 5.6.2. Binary Numeric Promotion sagt:
InformationsquelleAutor Ciro Santilli 新疆改造中心996ICU六四事件
Besetzung einer der Integer/Ganzzahl zu float zu zwingen, die operation zu tun, mit " floating point Math. Ansonsten integer-Mathematik ist immer bevorzugt.
Also:
InformationsquelleAutor Nikhil Kumar
Versuchen Sie dies:
InformationsquelleAutor May I help you