string to real conversion losing data

wrzosk dprogr at gmail.com
Thu Apr 8 14:29:51 PDT 2010


W dniu 08.04.2010 23:02, jicman pisze:
>
> Greetings and salutations!
>
> Will someone be so kind as to explain why this is happening?
>
> ----
> import std.stdio;
> import std.conv;
>
> void main()
> {
>    char[][] strRealVals =
>    [
>      "14539.34","1230.00","361.62","1613.10","","","0.00"
>    ];
>    real rTotal = 0;
>    foreach (char[] s; strRealVals)
>    {
>      writefln("Real value is: " ~ s);
>      real r = 0.00;
>      if (s != "")
>        r = std.conv.toReal(s);
>      rTotal += r;
>    }
>    writefln(std.string.toString(rTotal));
>    writefln(rTotal);
> }
> ----
>
> When I run this program, I get this:
> 16:51:35.54>realtest
> Real value is: 14539.34
> Real value is: 1230.00
> Real value is: 361.62
> Real value is: 1613.10
> Real value is:
> Real value is:
> Real value is: 0.00
> 17744.1
> 17744.1
>
> ----
>
> If I add these numbers, the outcome should be 17744.06.  Any ideas?  I am using Digital Mars D Compiler v1.046.
>
> thanks,
>
> jos�
>

it is looking ok to me, try this one and thing why it is like that :)


import std.stdio;
import std.conv;

void main()
{
	writefln(17744.06);
}


More information about the Digitalmars-d-learn mailing list