How to format float unambiguously?

deadalnix deadalnix at gmail.com
Tue Aug 31 17:53:12 UTC 2021


When formatting floats, as far as I can tell, one either has to 
pick the whole decimal gallery, or accept that the end result 
might be ambiguous.

For instance:

writefln!"%f"(1.);  // 1.000000
writefln!"%F"(1.);  // 1.000000
writefln!"%#f"(1.); // 1.000000
writefln!"%#F"(1.); // 1.000000
writefln!"%g"(1.);  // 1
writefln!"%G"(1.);  // 1
writefln!"%#g"(1.); // 1.000000
writefln!"%#G"(1.); // 1.000000

Specifying the precision allows to reduce it, but not increase it:

writefln!"%.1f"(1.0);  // 1.0
writefln!"%.1f"(1.11111);  // 1.1

Am I missing something? This problem also seem to exist when 
dumping value in D format. For instance:

writeln([1.0]); // [1]

Which is now an array of integers instead of floats.


More information about the Digitalmars-d mailing list