X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Ftextwriter.cpp;h=65f4870ea6e466816ee25d9dd40dbc550d00faa8;hb=19179a622c1de88de5ed7047643eec79f285bf2a;hp=0e5b6742653d80599809d645b77e1f91b9f60675;hpb=7df5e45c7f414f6a07681dc4ec2abb63b091a309;p=libs%2Fdatafile.git diff --git a/source/textwriter.cpp b/source/textwriter.cpp index 0e5b674..65f4870 100644 --- a/source/textwriter.cpp +++ b/source/textwriter.cpp @@ -9,9 +9,15 @@ namespace Msp { namespace DataFile { TextWriter::TextWriter(IO::Base &o): - WriterMode(o) + WriterMode(o), + float_format("%#.7g") { } +void TextWriter::set_float_precision(unsigned fp) +{ + float_format = format("%%#.%dg", fp/4-1); +} + void TextWriter::write(const Statement &st) { write_(st, 0); @@ -32,7 +38,7 @@ void TextWriter::write_(const Statement &st, unsigned level) else if(i->get_signature()==IntType::signature) out.write(lexical_cast(i->get())); else if(i->get_signature()==FloatType::signature) - out.write(format("%15g", (i->get()))); + out.write(format(float_format, i->get())); else if(i->get_signature()==SymbolType::signature) { string name = i->get().name;