Morgan Wajda-Levie on Sat, 20 Nov 1999 14:54:23 -0500 (EST) |
That seems like it would work. Thanks for the help from both of you. On Sat, Nov 20, 1999 at 02:31:00PM -0500, Son To wrote: > how about converting the float to char* with sprintf and counting > the number of digits after the '.'? > > On Sat, 20 Nov 1999, Morgan Wajda-Levie wrote: > > > I know that this is not a C programming mailing list, but a lot of > > Linux people know C, and this is C code being written on Linux, so > > it's somewhat applicable. > > > > I'm writing a function in C++ that takes a floating point number and > > returns the number digits of precision it has. I'm doing this with > > the following code: > > > > int f_digits(float number) > > { > > int a; > > number -= int(number); > > if(!number) return(0); > > for(a = 0; int(number / pow(10, a)) != number / pow(10, a); a--) > > { > > } > > return(a); > > } > > > > As far as I can tell, the code looks like it should work. If the > > number has two digits of precision, it should be evenly divisible by > > 10^-2, or 10.01. Instead, it loops infinitely. By running it through > > gdb, I find that it claims that number = 0.400024414, when it should > > be .4. (123.4 - 123). I tried dividing this number by 10^-9 in the > > debugger, and I wrote everything out by hand. Somehow, it came up > > with the following: > > > > .400024414 / .000000001 > > $4 = 400024413.99999994 > > > > Why can't C++ use floating point numbers accurately? > > > > Also, for system info: I'm running Debian potato with glibc 2.1.2-10 > > and gcc 2.95.2-3. > > -- > > Morgan Wajda-Levie > > http://www.worldaxes.com/wajdalev > > PGP fingerprint: > > A353 C750 660E D8B6 5616 F4D8 7771 DD21 7BF6 221C > > http://www.worldaxes.com/wajdalev/public.asc for PGP key > > encrypted mail preferred > > > > > _______________________________________________ > Plug maillist - Plug@lists.nothinbut.net > http://lists.nothinbut.net/mail/listinfo/plug -- Morgan Wajda-Levie http://www.worldaxes.com/wajdalev PGP fingerprint: A353 C750 660E D8B6 5616 F4D8 7771 DD21 7BF6 221C http://www.worldaxes.com/wajdalev/public.asc for PGP key encrypted mail preferred Attachment:
pgp9zFdReLFaE.pgp
|
|