Neu aufgesetztes Gentoo rundet bei Zeit-Ausgabe ab
-
Hallo,
ich habe mein neues Gentoo aufgesetzt und ein und dasselbe Programm verhält sich auf unterschiedlichen system in der Zeitausgabe anders. Warum?
Ich gebe meine Zeit so aus:clock_gettime(CLOCK_REALTIME, &tp); start = 1e9 * tp.tv_sec + tp.tv_nsec; //.... clock_gettime(CLOCK_REALTIME, &tp); stop = 1e9 * tp.tv_sec + tp.tv_nsec; time = (stop - start) * 1e-9; std::cout << "\t" << time << "\t[sec]" << std::endl;bei meinen anderen systemen ist die ausgabe z.B. 0.0123
bei dem einen system plötzlich 0 bzw. 0.01 was mir zu ungenau ist.wie kann ich das problem beheben bzw. woran könnte es liegen?
-
Das liegt am Locale bzw. was standardmäßig eingestellt ist.
Du kannst die Präzision erhöhen mit std::cout::set_precision (zumindest glaube ich, dass die Funktion so heißt, schau einfach mal in einer Referenz)
-
danke dir - was heißt das "es liegt am Locale" bzw. wie kann ich das ändern.
Ich würde gerne am System was ändern und nicht am Programm...damit es immer gleich bleibt...
-
kann mir jemand helfen? Ich weiß einfach nicht weiter und google und die sufu helfen mir auch nicht...
-
Woher weißt du, dass der auszugebende Wert immer der gleiche ist?
-
mein locale ist "C".
wie kann ich es ändern - ich will es ja nicht im programm ändern...sondern systemweit
-
@camper: Wie meinst du immer der gleiche? Ich sage ja nicht dass die werte gleich sind sondern die konsole mir halt nicht die volle zahl an nachkommastellen gibt. es wird irgendwie abgeschnitten nach der 2ten. Auch wenn ich setprecision nehme hilft das nichts...
-
also ich komme einfach nicht drauf....kann mir jemand helfen?
-
liegt das wirklich am Locale?
-
Meintest Du das System locale oder das C++ locale?
Ich möchte meinen Code natürlich nicht anpassen müssen - schießlich läuft es ja auf anderen Rechnern korrekt. Nur auf dem einen nicht - und hier möchte ich es hinbekommen.Wenn das C++ Locale gemeint war - wie stelle ich denn sowas systemintern um?
