This is the mail archive of the
cygwin
mailing list for the Cygwin project.
strtod (and atof) on hex numbers
- From: "Paul Biggar" <paul dot biggar at gmail dot com>
- To: cygwin at cygwin dot com
- Date: Tue, 20 Jun 2006 13:00:45 -0400
- Subject: strtod (and atof) on hex numbers
Hi,
atof (and hence strtod) on hexadecimal numbers results in 0.0 (errno
of 0). This may be related to an old issue where NaN isnt correctly
parsed. I believe it isnt correct behaviour:
http://www.opengroup.org/onlinepubs/000095399/functions/atof.html
I've tested it for integers in the range 0x8000000 to 0xFFFFFFFF. It
works properly on
ubuntu dapper, gcc 4.1 on i386;
debian stable, gcc 3.3 on amd64
sunos ?, gcc 3.4 on sparc
I'm using standard cygwin distribution, which uses gcc 3.4.4 (cygming special)
Sample code:
#include "limits.h"
#include <iostream.h>
#include "errno.h"
int main()
{
cout << ULONG_MAX << endl;
cout << 0xFFFFFFFF << endl;
errno = 0;
cout << atof("0xFFFFFFFF") << endl;
cout << errno << endl;
errno = 0;
cout << strtod("0xFFFFFFFF", NULL) << endl;
cout << errno << endl;
}
Is this being fixed? I could find a mention of it before. Does anyone
know a simple workaround?
Thanks
Paul
--
Paul Biggar
paul.biggar@gmail.com
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/