www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Float to string with more digits?

reply "Almighty Bob" <bob almighty.com> writes:
Is there a more accurate way to do a float and or double to 
string than...

to!string(float);

As that seems to limit itself to 6 digits.
Feb 24 2015
next sibling parent reply Justin Whear <justin economicmodeling.com> writes:
On Tue, 24 Feb 2015 20:04:04 +0000, Almighty Bob wrote:

 Is there a more accurate way to do a float and or double to string
 than...
 
 to!string(float);
 
 As that seems to limit itself to 6 digits.
Use std.string.format or std.format.formattedWrite. std.format contains a description of the various format specifiers. You'll probably want something like "%.12f", which formats a floating point number with 12 digits of precision.
Feb 24 2015
parent reply "Almighty Bob" <bob almighty.com> writes:
On Tuesday, 24 February 2015 at 20:08:55 UTC, Justin Whear wrote:
 On Tue, 24 Feb 2015 20:04:04 +0000, Almighty Bob wrote:

 Is there a more accurate way to do a float and or double to 
 string
 than...
 
 to!string(float);
 
 As that seems to limit itself to 6 digits.
Use std.string.format or std.format.formattedWrite. std.format contains a description of the various format specifiers. You'll probably want something like "%.12f", which formats a floating point number with 12 digits of precision.
that did it, thanks, :)
Feb 24 2015
parent "Almighty Bob" <bob almighty.com> writes:
Just to clarify what i needed was...

%.8g  or  %.7e

Significant digits, or fixed width scientific form. I needed more 
significant digits.

%.8f controls how many digits to print after the decimal point, 
which is not the same thing.
Feb 24 2015
prev sibling parent "H. S. Teoh via Digitalmars-d-learn" <digitalmars-d-learn puremagic.com> writes:
On Tue, Feb 24, 2015 at 08:04:04PM +0000, Almighty Bob via Digitalmars-d-learn
wrote:
 Is there a more accurate way to do a float and or double to string
 than...
 
 to!string(float);
 
 As that seems to limit itself to 6 digits.
What about std.format.format("%.12f", myFloat)? Or, if you like: string floatToString(F)(F f) if (isFloatingPoint!F) { // Extract as many digits as are available for this // type. return std.format.format("%.*f", F.dig, f); } T -- If you want to solve a problem, you need to address its root cause, not just its symptoms. Otherwise it's like treating cancer with Tylenol...
Feb 24 2015