I need to write a C program that will compare the number of digits before decimal point and after the decimal point and make sure they are equal.
How can I count how many powers of ten we have before and after the decimal point?
Here is what I have so far:
void main()
{
is_equal(6757.658);
}
INT is_equal(double x)
{
int digits = 0;
while (x) {
x /= 10;
digits++;
}
printf("%d ",digits);
}
Is there a better way to do this?
3rd try:
Count the number of “digits” before and after a “.”
Null is considered not equal to anything
I did not test this code it might contain typos.
Old stuff…
There are going to be lots of problems here, a floating point (double) in C is not always accurate to 100%; If you perform multiplication or division. If you multiply the digits will change.
The best way to solve this problem is to render the double to a string and then parse that string.
You can use sprintf to write the formatted double to a buffer.
OR
You can skip using a double all together and use a string to start with.
Thus building on Marcelo’s answer:
Read the string from the user into a buffer called
buffThen parse it with a statement like
sscanf(buf, "%d.%d", &a, &b);buff is a
char *or achar [],aandbareint. You test by sayinga == b