http://www.velocityreviews.com/forums/(E-Mail Removed) wrote:

> 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:

stringstream 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