Ich habe zwei ganze Zahlen x
und y
. Ich muss rechnen x/y
und als Ergebnis möchte ich schweben. Zum Beispiel 3/2
möchte ich als Ergebnis von 1.5 haben. Ich dachte , dass einfachste (oder einzige) Weg , es zu tun zu konvertieren x
und y
in float - Typen. Leider kann ich keinen einfachen Weg finden, dies zu tun. Könnten Sie mir bitte dabei helfen?
java
integer
floating-point
römisch
quelle
quelle
BigDecimal
ist kein allgemein korrekter Ersatz fürfloat
.Antworten:
Sie gerade benötigen Guss mindestens einer der Operanden mit einem Schwimmer:
float z = (float) x / y;
oder
float z = x / (float) y;
oder (unnötig)
float z = (float) x / (float) y;
quelle
Sie sollten float nicht verwenden, es sei denn, Sie müssen. In 99% der Fälle ist Double die bessere Wahl.
int x = 1111111111; int y = 10000; float f = (float) x / y; double d = (double) x / y; System.out.println("f= "+f); System.out.println("d= "+d);
druckt
f= 111111.12 d= 111111.1111
Nach dem Kommentar von @ Matt.
float hat eine sehr geringe Genauigkeit (6-7 Stellen) und zeigt ziemlich leicht einen signifikanten Rundungsfehler. double hat weitere 9 Stellen Genauigkeit. Die Kosten für die Verwendung von double anstelle von float sind in 99% der Fälle fiktiv, jedoch sind die Kosten für einen subtilen Fehler aufgrund eines Rundungsfehlers viel höher. Aus diesem Grund empfehlen viele Entwickler, überhaupt kein Gleitkomma zu verwenden, und empfehlen BigDecimal nachdrücklich.
Ich finde jedoch, dass Double in den meisten Fällen verwendet werden kann, vorausgesetzt, es wird eine sinnvolle Rundung verwendet .
In diesem Fall hat int x eine Genauigkeit von 32 Bit, während float eine Genauigkeit von 24 Bit hat. Selbst das Teilen durch 1 kann einen Rundungsfehler verursachen. double hingegen hat eine Genauigkeit von 53 Bit, was mehr als genug ist, um ein einigermaßen genaues Ergebnis zu erzielen.
quelle
double
es besser ist alsfloat
.Sie müssen nur den ersten Wert in float übertragen, bevor er in weitere Berechnungen einbezogen wird:
float z = x * 1.0 / y;
quelle
// Die Ganzzahl, die ich konvertieren möchte
int myInt = 100;
// Umwandlung der Ganzzahl in Float
float newFloat = (float) myInt
quelle
So können Sie es machen:
public static void main(String[] args) { // TODO Auto-generated method stub int x = 3; int y = 2; Float fX = new Float(x); float res = fX.floatValue()/y; System.out.println("res = "+res); }
Wir sehen uns !
quelle
Float
) ist hierfür völlig unnötig.Sameer:
float l = new Float(x/y)
funktioniert nicht, da zuerst die ganzzahlige Division von x und y berechnet und dann ein Float daraus erstellt wird.
float result = (float) x / (float) y;
Ist semantisch der beste Kandidat.
quelle