floating point value rounded to 6digits
Steven Schveighoffer
schveiguy at yahoo.com
Tue Sep 19 23:35:15 UTC 2017
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
More information about the Digitalmars-d-learn
mailing list