Mandragon03@gmail.com wrote:
Quote:
I am looking for a way to take a floating point number and get rid of
any extraneous 0's at the end. For instance if I have
>
myFloat = 9999;
>
printf("%f", myFloat);
>
I get 9999.0000. I want to get rid of these 0's.
>
Here is one catch. I also need to be able to do this:
>
myFloat = .531;
>
printf("%f", myFloat);
>
I get .5310000
>
I need to get .531.
>
I realize I can do this
>
printf("%2f", myFloat);
>
which will limit the mantissa to two places, but this will not work
for what i am doing because I can not lose that much precision on
floats like .05369.
The problem actually is rather simple. The default is 7 decimal
digits in the result, which means that 0.5310000 and 0.530999951
will give you the same output. The zeros are there to indicate to
what digit the output was _rounded_ to.
If you really need to lose the trailing zeros, you will have to
trim them yourself. Convert your number to a string and drop all
chars from it until the first non-zero:
std::ostringstream s;
s << myFloat;
std::string str = s.str();
while (str.size() 1 && *str.rbegin() == '0')
str.erase(str.size() - 1);
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask