2010-02-25 10 views
27

muszę zapobiec mój podwójne drukowanie w notacji naukowej w moim pliku,Prevent notacja naukowa w ostream podczas korzystania << z podwójnym

kiedy to zrobić

outfile << X; 
+1

pokrewne dla innych języków: [Haskell] (http://stackoverflow.com/questions/8098457/how-do-i-get-to-haskell-to-output-numbers-not-in-scientific-notation) [Lua] (http://stackoverflow.com/questions/1133639/how-can-i-print -a-ogromna liczba-w-lua-bez-używania-naukowych-notacji) [C++ ostreams] (http://stackoverflow.com/questions/2335657/prevent-scientific-notation-in-ostream-when-using- with-double) [Delphi] (http://stackoverflow.com/questions/6077153/how-to-disable-scie ntific-notation-in-astring-in-delphi) –

Odpowiedz

30

Aby ustawić formatowanie pływających zmiennych można użyć kombinacji setprecision(n), showpoint i fixed. W celu wykorzystania parametryzowane manipulatory strumieniowych jak setprecision(n) trzeba będzie obejmować iomanip Biblioteka:

#include <iomanip> 

setprecision(n): ograniczy zmiennoprzecinkowych wyjście n miejscach, a raz go ustawić, jest on ustawiony, dopóki jawnie wyłączony to dla pozostałej części strumienia wyjściowego.

fixed: spowoduje wymuszenie, że wszystkie liczby zmiennoprzecinkowe są wyprowadzane w ten sam sposób. Więc jeśli precyzja jest ustawiona na 4 miejscach, 6.2 i 6.20 będą zarówno być wyprowadzane jako:

6.2000 
6.2000 

showpoint: zmusi części dziesiętne zmiennej zmiennoprzecinkowej mają być wyświetlane, nawet jeśli nie jest to wyraźnie zestaw. Na przykład, 4 będzie odtwarzany jako:

4.0 

Stosując je wszystkie razem:

+1

Co sprawia, że ​​myślisz, że showpoint ma tutaj jakieś znaczenie? Część dziesiętna jest zawsze pokazywana z zerami z powodu precyzji. – Ident