%s
est une chaîne dans printf
, et% d est une décimale que je pensais ... pourtant lors de la mise en
writer.printf("%d dollars is the balance of %s\r\n", bal, nm);
..une exception est levée en me disant que %d
! = lang.double. Des idées?
%d
est pour les entiers, utilisez %f
à la place, il fonctionne pour les types float
et double
:
double d = 1.2;
float f = 1.2f;
System.out.printf("%f %f",d,f); // prints 1.200000 1.200000
Oui, %d
signifie décimal, mais cela signifie système de nombres décimaux , pas un point décimal.
De plus, en complément de l'ancien article, vous pouvez également contrôler le nombre de décimales à afficher. Essaye ça,
System.out.printf("%.2f %.1f",d,f); // prints 1.20 1.2
Pour plus d'informations, reportez-vous aux documentation API .
Oui,% d est décimal (entier), attendez deux fois% f. Mais en utilisant simplement% f par défaut jusqu'à la précision 6. Pour imprimer tous les chiffres de précision pour un double, vous pouvez le passer via une chaîne comme:
System.out.printf("%s \r\n",String.valueOf(d));
ou
System.out.printf("%s \r\n",Double.toString(d));
C'est ce que println fait par défaut:
System.out.println(d)
(et termine la ligne)