0
how to make the number after point normal ?
// Floating-point arithmetic with float #include <cs50.h> #include <stdio.h> int main(void) { printf("%lu\n", sizeof(float)); // Prompt user for x float x = get_float("x: "); // Prompt user for y float y = get_float("y: "); // Perform division printf("x / y = %.50f\n", x / y); } if I enter 1 and 10 the output shows x / y = 0.10000000149011611938476562500000000000000000000000 why it shows the random number after the 8th bit after the point although the size used to store float is 32 bit..so I suppose the random number should be after the 32th bit after the point ? how can I make the output all the digits after 1 be zeros ?
1 Odpowiedź
0
Why is it like this: the computer is calculating in binary system. As in decimal we can't 'cleanly' write down 1/3, 1/5 or 1/7, the computer can't cleanly calculate 1/10 (as 10 is not a multiple of 2).
(See https://0.30000000000000004.com/)
What can you do to prevent that?
Round your results.
Important note:
Don't check equality on floats and doubles as they often should be equal, but differ (in a very small scale).
Instead check if they only differ in a very small difference.