所以我想知道如何在C (而不是C ++,C#或Java)中将双精简舍入到最接近的第八位。我在帖子之前尝试搜索答案,这是我发现的唯一语言。的教程。)有没有人知道如何做到这一点?
示例输出如下:如果输入的数字是0.126,则将其四舍五入到0.250。如果它是0.124,它会向上舍入到0.125。
答案 0 :(得分:2)
如你所说,你希望你的数字四舍五入到最接近的1/8。
#include <math.h>
#include <stdio.h>
double roundToEight(double value)
{
return ceil(value*8)/8;
}
int main()
{
printf("%f\n",roundEight(12.42)); //12.500
printf("%f\n",roundEight(12.51)); //12.625
printf("%f\n",roundEight(12.50)); //12.500
printf("%f\n",roundEight(-0.24)); //-0.125
printf("%f\n",roundEight(0.3668)); //0.375
return 0;
}
如果您希望将负数舍入,则可以在其中放置if
语句,并在负分支上使用floor()而不是ceil()。
答案 1 :(得分:0)
这是一个处理舍入的函数:
double roundToNearestEighths(double value) {
if (value >= 0)
return floor(value * 8.0 + 0.5) / 8.0;
else
return -floor(-value * 8.0 + 0.5) / 8.0;
}