
Hi I am using boost 1.4.1 Spirit::Qi.
I think we have a floating point truncation bug in the qi::float_ parser. I attached a simple program to repro the bug.
Below are some examples of an input floating point gets truncated (=>) by the qi::float_:
12312321421421 => 12312321720320.000000 123123214 => 123123216.000000 123233.4124 => 123233.406250
I don't see the same issue with the qi::double_.
Wondering if this is a known issue?
If I do: #include <iostream> #include <iomanip> int main() { float f1 = 12312321421421.f; float f2 = 123123214.f; float f3 = 123233.4124f; std::cout.precision(20); std::cout << "12312321421421 --> " << f1 << std::endl; std::cout << "123123214 --> " << f2 << std::endl; std::cout << "123233.4124 --> " << f3 << std::endl; return 0; } I get (gcc 4.5.1 and VS2010): 12312321421421 --> 12312321720320 123123214 --> 123123216 123233.4124 --> 123233.4140625 which is almost consistent with what Spirit is doing. The last case worries me, though. I'll try to have a closer look there. Regards Hartmut --------------- http://boost-spirit.com