When I debug my software in VS C++ by stepping the code I notice that some float calculations show up as a number with a trailing dot, i.e.:
1232432.
One operation that lead up to this result is this:
float result = pow(10, a * 0.1f) / b
where a is a large negative number around -50 to -100 and b is most often around 1. I read some articles about problem with precision when it comes to floating-points. My question is just if the trailing dot is a Visual-Studio-way of telling me that the precision is very low on this number, i.e. in the variable result. If not, what does it mean?
This came up at work today and I remember that there was a problem for larger numbers so this did to occur every time (and by “this” I mean that trailing dot). But I do remember that it happened when there was seven digits in the number. Here they wright that the precision of floats are seven digits:
C++ Float Division and Precision
Can this be the thing and Visual Studio tells me this by putting a dot in the end?
I THINK I FOUND IT! It says “The mantissa is specified as a sequence of digits followed by a period”. What does the mantissa mean? Can this be different on a PC and when running the code on a DSP? Because the thing is that I get different results and the only thing that looks strange to me is this period-thing, since I don’t know what it means.
http://msdn.microsoft.com/en-us/library/tfh6f0w2(v=vs.71).aspx
If you’re referring to the “sig figs” convention where “4.0” means 4±0.1 and “4.00” means 4±0.01, then no, there’s no such concept in
floatordouble. Numbers are always* stored with 24 or 53 significant bits (7.22 or 15.95 decimal digits) regardless of how many are actually “significant”.The trailing dot is just a decimal point without any digits after it (which is a legal C literal). It either means that
1232432.0and they trimed the unnecessary trailing zero, ORThe real question is, why are you using
float?doubleis the “normal” floating-point type in C(++), andfloata memory-saving optimization.* Pedants will be quick to point out denormals, x87 80-bit intermediate values, etc.