Weird floating point rounding - Bug or how to control it correctly

Basile B. b2.temp at gmx.com
Thu Sep 14 05:06:20 UTC 2023


On Thursday, 14 September 2023 at 03:23:48 UTC, An Pham wrote:
> import std.stdio;
>
>     void main()
>     {
>         float f = 6394763.345f;
>     	
>         import std.format : sformat;
>
>         char[80] vBuffer = void;
>         writeln("6394763.345 = ", sformat(vBuffer[], "%.4f", 
> f));
>     	
>     }
>
> Output
> 6394763.345 = 6394763.5000

Classic question. The float literal `6394763.345f` is not 
representable as IEEE-754 floating point number.

Try https://www.h-schmidt.net/FloatConverter/IEEE754.html for a 
short introduction to the issue.


More information about the Digitalmars-d-learn mailing list