Getting the number of decimal places: Difference between revisions

Content added Content deleted
Line 44: Line 44:
12.3450 has 4 decimals
12.3450 has 4 decimals
</pre>
</pre>

=={{header|C}}==
<lang c>#include <stdio.h>

int findNumOfDec(double x) {
char buffer[128];
int pos, num;

sprintf(buffer, "%.14f", x);

pos = 0;
num = 0;
while (buffer[pos] != 0 && buffer[pos] != '.') {
pos++;
}
if (buffer[pos] != 0) {
pos++; // skip over the decimal
while (buffer[pos] != 0) {
pos++; // find the end of the string
}
pos--; //reverse past the null sentiel
while (buffer[pos] == '0') {
pos--; // reverse past any zeros
}
while (buffer[pos] != '.') {
num++;
pos--; // only count decimals from this point
}
}
return num;
}

void test(double x) {
int num = findNumOfDec(x);
printf("%f has %d decimals\n", x, num);
}

int main() {
test(12.0);
test(12.345);
test(12.345555555555);
test(12.3450);
test(12.34555555555555555555);
test(1.2345e+54);
return 0;
}</lang>
{{out}}
<pre>12.000000 has 0 decimals
12.345000 has 3 decimals
12.345556 has 12 decimals
12.345000 has 3 decimals
12.345556 has 14 decimals
1234500000000000060751116919315055127939946206157864960.000000 has 0 decimals</pre>


=={{header|Go}}==
=={{header|Go}}==