$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
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.