omzetten van dubbel naar geheel getal in java
In Java, wil ik een dubbel omzetten naar een geheel getal, ik weet of je dit doet:
double x = 1.5;
int y = (int)x;
je y=1 krijgt. Als je dit doet:
int y = (int)Math.round(x);
Je'zult waarschijnlijk 2 krijgen. Ik vraag me echter af: aangezien dubbele representaties van gehele getallen er soms uitzien als 1,9999999998 of zoiets, is er een mogelijkheid dat het casten van een dubbel gemaakt via Math.round() nog steeds zal resulteren in een afgekapt getal naar beneden, in plaats van het afgeronde getal dat we zoeken (d.w.z.: 1 in plaats van 2 in de code zoals weergegeven) ?
(en ja, ik bedoel het ook zo: Is er elke waarde voor x, waarbij y een resultaat zal tonen dat een afgeknotte in plaats van een afgeronde weergave van x is)?
Zo ja: is er een betere manier om van een dubbel een afgeronde int te maken zonder het risico van truncatie te lopen?
Ik heb iets bedacht: Math.round(x) geeft een lang getal terug, geen dubbel getal. Dus: het is onmogelijk voor Math.round() om een getal terug te geven dat lijkt op 3.9999998. Daarom zal int(Math.round()) nooit iets moeten afkappen en zal het altijd werken.
Nee,
round()
rondt het getal altijd af naar de juiste waarde, en giet het dan naar eenlong
die de decimalen afkapt. Maar na het afronden blijven er geen fractionele delen over.Hier zijn de documenten van
Math.round(double)
:Voor het datatype
Double
naarint
, kun je het volgende gebruiken:Mijn doel opgelost.