When running a Windows 32-bit or 64-bit cross-compiled executable
under Windows (XP) 32-bit OS or 64-bit OS cout gives no good answers
for "long double" datatype. (The problem does not exist under Linux).
For example:
long double dx = 16.125e-08;
cout << "dx =" << dx << endl;
You can fix the problem by casting it into "double":
cout << "dx =" << (double)dx << endl;
At last i have fixed the problem by patching the compiler "ostream" files:
./i686-w64-mingw32/include/c++/4.7.0/ostream
and
./x86_64-w64-mingw32/include/c++/4.7.0/ostream
diff:
224c224,227
< { return _M_insert(__f); }
---
> { //return _M_insert(__f);
> //SdeG, cast "long double" into "double"
> return _M_insert(static_cast<double>(__f));
> }
Your comments about this problem/fix are welcome.
Regards,
Simon de Graaf
------------------------------------------------------------------------------
RSA(R) Conference 2012
Save $700 by Nov 18
Register now
http://p.sf.net/sfu/rsa-sfdev2dev1
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public