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

Reply via email to