WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Formatering av flyttal (https://www.wn.se/forum/showthread.php?t=33168)

goober 2008-11-10 00:51

Jag skulle behöva hjälp med utskriften av flyttal i java.

Om talet är mellan 1 och 0 vill jag inte att den inledande 0:an ska skrivas ut om, t ex. 0.12 => .12

Har gjort några försök med printf men utan större framgång, Går det att formatera detta med printf eller måste man göra det på ett krångligare sätt?

/Mathias

eg0master 2008-11-10 09:01

Just java har jag ingen koll på, men formatsträngar brukar ju fungera på ungefär samma sätt oavsett språk och i så fall så är nog tyvärr lösningen att konvertera till ett heltal.
Givet C-syntax borde din format sträng se ut så här idag:
Kod:

printf("%0.6f", value);
Men för att slippa nollan får du göra:
Kod:

printf(".%d", value*1000000);
Förutsätter ju att du aldrig har värdet "1" utan bara mellan 0 och 1. Om värdet 1 kan förekomma får du göra:
Kod:

printf("%s.%d",value==1?"1":"",value==1?0:value*1000000);

totoo 2008-11-11 00:17

det går ju också att köra hela printgrejen genom en replacefunktion som ersätter 0. med ....

typ printf(replace(minText, "0.", "."));

(pseudokod)....

inte speciellt snyggt, men det är bättre än inget ifall allt annat sviker. :)


Alla tider är GMT +2. Klockan är nu 00:06.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson