%s
is een tekenreeks in printf
, en %d is een decimaalteken waarvan ik dacht…maar toen ik
invoerde
writer.printf("%d dollars is the balance of %s\r\n", bal, nm);
..er wordt een uitzondering gegenereerd die me vertelt dat %d
!= lang.double. Ideeën?
Antwoord 1, autoriteit 100%
%d
is voor gehele getallen, gebruik in plaats daarvan %f
, het werkt voor zowel float
als double
typen:
double d = 1.2;
float f = 1.2f;
System.out.printf("%f %f",d,f); // prints 1.200000 1.200000
Antwoord 2, autoriteit 42%
Ja, %d
betekent decimaal, maar het betekent decimaal getalsysteem, geen decimale punt.
Verder, als aanvulling op het vorige bericht, kun je ook het aantal decimale punten bepalen dat moet worden weergegeven. Probeer dit,
System.out.printf("%.2f %.1f",d,f); // prints 1.20 1.2
Raadpleeg voor meer informatie de API-documenten .
Antwoord 3, autoriteit 7%
Hier volgt de lijst met conversietekens die u in de printf kunt gebruiken:
%d – for signed decimal integer
%f – for the floating point
%o – octal number
%c – for a character
%s – a string
%i – use for integer base 10
%u – for unsigned decimal number
%x – hexadecimal number
%% – for writing % (percentage)
%n – for new line = \n
Antwoord 4, autoriteit 4%
Ja, %d is voor decimaal (geheel getal), dubbel verwacht %f. Maar gewoon %f gebruiken zal standaard tot precisie 6 zijn. Om alle precisiecijfers voor een dubbel af te drukken, kunt u het via een string doorgeven als:
System.out.printf("%s \r\n",String.valueOf(d));
of
System.out.printf("%s \r\n",Double.toString(d));
Dit is wat println standaard doet:
System.out.println(d)
(en beëindigt de regel)