String "runden" funktioniert nicht
-
ich habe eine Zahl vom Typ long double in einen string umgewandelt und möchte den string nun auf zwei stellen runden. Ich hab folgenden code geschrieben:
for(i = 0, p = 0; p == 0; i++) { if(zahl[i] == '.') { zahl[i] = ','; if((zahl[i+3] > 4) && (zahl[i+3] != 0)) { zahl[i+2] = zahl[i+2] + 1; p = 1; } } }
Allerdings will das einfach nicht funktionieren. Kann mir jemand sagen warum??
Das umwandeln von der Zahl in einen String hat folgenden Sinn: der Punkt soll in ein Komma umgewandelt werden und es sollen nur 2 Nachkommastellen ausgegeben werden.
Gibt es schon fertige funktionen zum runden??
-
neo47 schrieb:
Gibt es schon fertige funktionen zum runden??
Versuch's mal so:
#include <stdio.h> #include <string.h> int main(void) { long double var = 3.14159; char str[64]; sprintf(str, "%#.2Lf", var); *strchr(str, '.') = ','; puts(str); return 0; }
Edit: long double
-
neo47 schrieb:
Das umwandeln von der Zahl in einen String hat folgenden Sinn: der Punkt soll in ein Komma umgewandelt werden und es sollen nur 2 Nachkommastellen ausgegeben werden.
Das ergibt aber keinen Sinn. Du solltest lieber die locale setzen (Forensuche benutzen) und printf nutzen.
-
Janjan schrieb:
Das ergibt aber keinen Sinn. Du solltest lieber die locale setzen (Forensuche benutzen) und printf nutzen.
Naja, wenn er ein Komma will... soll er lieber darauf hoffen, dass das Zielsystem eine Komma-Locale hat, oder einfach ein Komma machen?
-
@mngbd: genau was ich gesucht hab. Danke für die schnelle Antwort