如何将小数舍入(向上)到C中最接近的第八位

时间:2016-11-16 01:22:16

标签: c

所以我想知道如何在C (而不是C ++,C#或Java)中将双精简舍入到最接近的第八位。我在帖子之前尝试搜索答案,这是我发现的唯一语言。的教程。)有没有人知道如何做到这一点?

示例输出如下:如果输入的数字是0.126,则将其四舍五入到0.250。如果它是0.124,它会向上舍入到0.125。

2 个答案:

答案 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;
}