Hoe kan ik integer omzetten in Float in Java?

Ik heb twee gehele getallen xen y. Ik moet x/yberekenen en als uitkomst zou ik graag zweven. Bijvoorbeeld als een uitkomst van 3/2zou ik 1,5 hebben. Ik dacht dat het gemakkelijkst (of de enige) manier om het te doen is om xen yin floatstype te converteren. Helaas kan ik geen gemakkelijke manier vinden om het te doen. Zou je me daar kunnen helpen?


Antwoord 1, Autoriteit 100%

U hoeft alleen te casten ten minste één van de operanden tot een vlotter:

float z = (float) x / y;

of

float z = x / (float) y;

of (onnodig)

float z = (float) x / (float) y;

Antwoord 2, Autoriteit 4%

U moet drijver niet gebruiken tenzij u moet. In 99% van de gevallen is dubbel een betere keuze.

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);

PRINTS

f= 111111.12
d= 111111.1111

Volgend @ Matt’s commentaar.

FLOVER heeft zeer weinig precisie (6-7 cijfers) en toont een aanzienlijke afrondingsfout vrij eenvoudig. Dubbel heeft nog eens 9 cijfers nauwkeurigheid. De kosten van het gebruik van dubbele in plaats van float is fictief in 99% van de gevallen, maar de kosten van een subtiele bug als gevolg van afrondingsfout is veel hoger. Om deze reden raden veel ontwikkelaars aan om helemaal geen drijvend punt te gebruiken en sterk bigdecimal aan te bevelen.

Ik vind echter dat dubbel in de meeste gevallen kan worden gebruikt mits verstandige afronding wordt gebruikt.

In dit geval heeft int x 32-bits precisie, terwijl float een 24-bits precisie heeft. Zelfs delen door 1 kan een afrondingsfout hebben. double daarentegen heeft een nauwkeurigheid van 53 bits, wat meer dan genoeg is om een redelijk nauwkeurig resultaat te krijgen.


Antwoord 3, autoriteit 4%

Je hoeft alleen maar de eerste waarde over te dragen naar float, voordat deze betrokken raakt bij verdere berekeningen:

float z = x * 1.0 / y;

Antwoord 4, autoriteit 2%

// Het gehele getal dat ik wil converteren

int myInt = 100;

// Casting van integer naar float

float newFloat = (float) myInt

Antwoord 5, autoriteit 2%

Hier is hoe u het kunt doen:

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);
}

Tot ziens!


Antwoord 6

Sameer:

float l = new Float(x/y)

werkt niet, omdat het eerst de gehele deling van x en y berekent en er vervolgens een float van construeert.

float result = (float) x / (float) y;

Is semantisch de beste kandidaat.

Other episodes