?
DjangoG schrieb:
Sonst noch jemand eine Idee???
Habe etwas mit locale.h gelesen aber konnte damit nicht viel anfangen?
Mit locales ist wohl geschummelt...
Mit ein wenig Mathe ist das schon zu schaffen, aber wenn ich schon höre, dass es noch kein "if" gibt in Deinem Wortschatz, wohl doch nicht.
Allerdings hält Dich ja niemand davon ab, selber dem Unterricht vorzugreifen z.B. mit einem Buch aus der Bibliothek oder so.
#include <stdio.h>
#include <math.h> // pow
#include <locale.h>
int main(void){
const char* header = "/*\n"
"* Gleitpunktzahl: %f\n"
"* Kommastellen runden: %d\n"
"*/\n";
double zahl = 12.345678;
int prec = 4; // Nachkommastellen
printf(header, zahl, prec);
// Auf- und abrunden auch printf machen lassen
// einfacher aber effektiver Trick...
printf("Abgerundet: %.*f\n", prec, zahl-.5*pow(10,-prec));
printf("Aufgerundet: %.*f\n", prec, zahl+.5*pow(10,-prec));
printf("Nach Rundungsregeln: %.*f\n", prec, zahl);
// locale umschalten und nochmal ausgeben:
// "de_DE" ist ein POSIX locale - k.A. ob und wie das
// unter Windows funktioniert...
const char *oldlocale = setlocale(LC_NUMERIC, "de_DE");
printf("In deutscher Schreibweise: %.*f\n", prec, zahl);
setlocale(LC_NUMERIC, oldlocale);
}
Wenn man die Dokumentation zu printf() liest ist's zu schaffen. Das mit der Präzision als Argument ausserhalb der Formatstrings ist kein häufig verwendetes Mittel.