Wie kann man die Division von 2 Ints dazu bringen, einen Float anstelle eines anderen Ints zu erzeugen?

Lesezeit: 3 Minuten

Wie kann man die Division von 2 Ints dazu bringen
phil

In einer anderen Übung von Bruce Eckels zur Berechnung der Geschwindigkeit, v = s / t wobei s und t ganze Zahlen sind. Wie schaffe ich es, dass die Division einen Schwimmer herausbringt?

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 eine Division durch und wandelt das Ergebnis in einen Float um. float v=(float)s/t wandelt in Float um und führt dann die Division durch.

    – Juan Carlos Iturriagagoitia

    22. Februar 2019 um 0:29 Uhr


Wie kann man die Division von 2 Ints dazu bringen
Alnitak

Wandeln Sie einfach zuerst einen der beiden Operanden in einen Float um.

v = (float)s / t;

Der Cast hat eine höhere Priorität als die Division, also geschieht dies vor der Division.

Der andere Operand wird vom Compiler effektiv automatisch in einen Gleitkommawert umgewandelt, da die Regeln besagen, dass, wenn einer der Operanden vom Gleitkommatyp ist, die Operation eine Gleitkommaoperation ist, selbst wenn der andere Operand ganzzahlig ist. Java-Sprachspezifikation, §4.2.4 und §15.17

Versuchen:

v = (float)s / (float)t;

Das Umwandeln der Ints in Floats ermöglicht eine Gleitkomma-Division.

Sie müssen jedoch wirklich nur einen werfen.

  • Ich weiß nicht, es ist, als würde man sagen, dass man longs anstelle von ints verwenden sollte.

    – Jakub Zaverka

    21. April 2012 um 22:29 Uhr

Wandeln Sie eine der ganzen Zahlen in einen Gleitkommawert um, um zu erzwingen, dass die Operation mit Gleitkomma-Mathematik ausgeführt wird. Andernfalls wird immer ganzzahlige Mathematik bevorzugt. Damit:

v = (float)s / t;

1646169428 215 Wie kann man die Division von 2 Ints dazu bringen
Weltraumprogrammierer

Um die Auswirkungen auf die Lesbarkeit des Codes zu verringern, würde ich vorschlagen:

v = 1d* s/t;

Sie können den Zähler oder den Nenner in Floating umwandeln …

int-Operationen geben normalerweise int zurück, also müssen Sie eine der Operandennummern ändern.

  • Meistens? Wenn sie überhaupt zurückkehren, werden sie int zurückkehren.

    – Matthäus Flaschen

    25. April 2009 um 9:39 Uhr

1646169428 941 Wie kann man die Division von 2 Ints dazu bringen
Uri

Sie können sogar nur einen von ihnen umwandeln, aber aus Gründen der Konsistenz möchten Sie vielleicht beide explizit umwandeln, sodass etwas wie v = (float)s / (float)t funktionieren sollte.

  • Meistens? Wenn sie überhaupt zurückkehren, werden sie int zurückkehren.

    – Matthäus Flaschen

    25. April 2009 um 9:39 Uhr

1646169429 380 Wie kann man die Division von 2 Ints dazu bringen
Nikhil Kumar

Wandeln Sie eine der Ganzzahlen/beide Ganzzahlen in Float um, um zu erzwingen, dass die Operation mit Fließkomma-Mathematik ausgeführt wird. Ansonsten wird Integer Math immer bevorzugt. Damit:

1. v = (float)s / t;
2. v = (float)s / (float)t;

904960cookie-checkWie kann man die Division von 2 Ints dazu bringen, einen Float anstelle eines anderen Ints zu erzeugen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy