Boost logo

Boost Users :

Subject: Re: [Boost-users] [lexical_cast] float-to-string rounding error (notfound with cout)
From: Peter Dimov (pdimov_at_[hidden])
Date: 2009-04-30 13:20:27


Grant Birchmeier:
> I'm seeing unexpected behavior when using lexical_cast<string>.
>
> This code:
> const float f = 00123.12300;
> cout << f << endl;
> cout << boost::lexical_cast<std::string>(f) << endl;
> gives the result:
> 123.123
> 123.123001
>
> Two questions:
>
> (1) Is there a way to eliminate this trailing '1' with lexical_cast
> (presumably some wierd rounding error)?

Try this code:

    float f = 00123.12300;
    std::cout << f << std::endl;
    std::cout << boost::lexical_cast<std::string>(f) << std::endl;

    float f2 = 123.123001;
    std::cout << f2 << std::endl;
    std::cout << boost::lexical_cast<std::string>(f2) << std::endl;

    std::cout << f - f2 << std::endl;

which will hopefully answer your question.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net