konvertering af dobbelt til heltal i java
I Java vil jeg konvertere en double til et heltal, jeg ved, om du gør det:
double x = 1.5;
int y = (int)x;
du får y=1. Hvis du gør dette:
int y = (int)Math.round(x);
Du'får sandsynligvis 2. Jeg undrer mig dog: Da dobbelt repræsentationer af heltal nogle gange ser ud som 1.99999999999998 eller noget, er der så en mulighed for, at casting af en double oprettet via Math.round() stadig vil resultere i et afkortet tal nedad, i stedet for det afrundede tal vi leder efter (dvs.: 1 i stedet for 2 i koden som repræsenteret) ?
(og ja, jeg mener det som sådan: Er der nogle værdier for x, hvor y vil vise et resultat, der er en afkortet snarere end en afrundet repræsentation af x)?
Hvis ja: Er der en bedre måde at gøre en double til en afrundet int uden at risikere trunkering?
Fandt ud af noget: Math.round(x) returnerer en long, ikke en double. Derfor: Det er umuligt for Math.round() at returnere et tal der ligner 3.9999998. Derfor vil int(Math.round()) aldrig skulle afkortes noget og vil altid virke.
Nej,
round()
vil altid afrunde din double til den korrekte værdi, og derefter vil den blive castet til enlong
, som vil afkortede alle decimaler. Men efter afrundingen vil der ikke være nogen brøkdele tilbage.Her er dokumentationen fra
Math.round(double)
:For datatypen
Double
tilint
kan du bruge følgende:Løste mit formål.