On 9/19/17 7:28 PM, Ivan Kazmenko wrote:
On Tuesday, 19 September 2017 at 22:44:06 UTC, greatsam4sure wrote:
On Tuesday, 19 September 2017 at 21:52:57 UTC, Ivan Kazmenko wrote:
On Tuesday, 19 September 2017 at 20:47:02 UTC, greatsam4sure wrote:
double value = 20.89766554373733;
writeln(value);
//Output =20.8977
How do I output the whole value without using writfln,write or
format. How do I change this default
The default when printing floating-point numbers is to show six most
significant digits.
You can specify the formatting manually with writefln, for example,
writefln ("%.10f", value);
will print the value with 10 digits after the decimal point.
The writef/writefln function behaves much like printf in C.
See here for a reference on format strings:
https://dlang.org/library/std/format/formatted_write.html#format-string
Ivan Kazmenko.
I don't want to use write,writefln or format. I just want to change
the default
Unlikely to be possible. The built-in data types, such as float or
double, by definition should not be customizable to such degree.
Anyway, under the hood, write uses format with the default format
specifier "%s" for the values it takes. So perhaps I'm not quite
getting what exactly are you seeking to avoid.
What he's looking for is a way to globally set "I want all floating
point values to print this way, unless a more specific specifier is given."
It's not a terrible idea, as any code that's using %s most of the time
doesn't really care what the result looks like.
I imagine an API like this:
import std.format: setDefaultFormat;
setDefaultFormat!float("%.10f");
-Steve