return value of pow() gets rounded down if assigned to an integer
问题 I am using the pow function in C and storing the return value in an integer type. see the code snippet below: for (i = 0; i < 5; i++){ val = (int)pow(5, i); printf("%d, ", val); } here i , and val are integers and the output is 1, 5, 24, 124, 624 . I believe this is because a float 25 is treated as 24.99999... which gets rounded down to 24 on assignment to an integer. How can I by pass this if I still need to store the return value in an int ? 回答1: Add 0.5 before casting to int . If your