string to real conversion losing data

jicman cabrera_ at _wrc.xerox.com
Thu Apr 8 14:02:26 PDT 2010


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é



More information about the Digitalmars-d-learn mailing list