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