Voici un exemple:valeur double retourne 0
Double d = (1/3);
System.out.println(d);
retourne 0, pas 0,33333 ... comme il se doit.
Quelqu'un sait-il?
Voici un exemple:valeur double retourne 0
Double d = (1/3);
System.out.println(d);
retourne 0, pas 0,33333 ... comme il se doit.
Quelqu'un sait-il?
C'est parce que 1
et 3
sont traités comme integers
lorsque vous ne spécifiez pas autrement, si la 1/3
évalue integer
0
qui est ensuite jeté à la double
0
. Pour le résoudre, essayez (1.0/3)
, ou peut-être 1D/3
pour indiquer explicitement que vous avez affaire à des valeurs doubles.
Si vous avez int
s que vous souhaitez diviser en utilisant la division à virgule flottante, vous devrez lancer le int
à un double
:
double d = (double)intValue1/(double)intValue2
(En fait, la coulée ne intValue2
devrait être suffisant pour avoir le intValue1
transtypée à double
automatiquement, je crois.)
utilisez à double et non Double à moins que vous devez utiliser ces Valu es dans le sens de l'objet. Tenez-vous au courant des concepts Autoboxing
L'OP posait des questions sur les méthodes de troncature de Java et pourquoi une division d'entiers est tronquée, même si elle est stockée dans un double; pas sur l'autoboxing. – MathSquared
La duplication possible de [Division en Java aboutit toujours à zéro (0)?] (Http://stackoverflow.com/questions/10455677/division-in-java-always-results-in- zéro-0) –
@ ΦXocę 웃 Пepeúpa ツ Ce n'est pas un doublon. Cette question est un doublon de cette question. Regardez les dates avant que vous ne marquez – Zoe