Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
四舍五入到下一个.05英寸C_C - Fatal编程技术网

四舍五入到下一个.05英寸C

四舍五入到下一个.05英寸C,c,C,考虑用户设置的浮点值,如1.82。如何找到下一个最高的.05值?对于给定的示例,下一个最大值为1.85 有简单的方法吗?还是需要复杂的算法?我尝试使用floor和天花函数来计算从浮点到下一个最高和最低整数的距离。但我不知道一旦我有了这些信息该怎么办 谢谢。乘以20,使用天花板,除以20。这是一个非常有用的信息资源。为@Justin的答案编写代码。注意,这很容易推广 #include <math.h> #include <stdio.h> int main(void) {

考虑用户设置的浮点值,如1.82。如何找到下一个最高的.05值?对于给定的示例,下一个最大值为1.85

有简单的方法吗?还是需要复杂的算法?我尝试使用floor和天花函数来计算从浮点到下一个最高和最低整数的距离。但我不知道一旦我有了这些信息该怎么办


谢谢。

乘以20,使用天花板,除以20。

这是一个非常有用的信息资源。

为@Justin的答案编写代码。注意,这很容易推广

#include <math.h>
#include <stdio.h>

int main(void) {
    int i;
    double numbers[] = {
        1.82, 0.3, 0.2, 0.5, 10000000000.849,
    };

    for (i = 0; i < sizeof(numbers)/sizeof(numbers[0]); ++i) {
        double scaled = ceil(20 * numbers[i]);
        printf("%.2f\n", scaled/20.0);
    }

    return 0;
}

断言只是虚构的

您可以使用

    // Rounds X to the nearest Y
    double round(double x, double y)
    {
        return floor(x / y + 0.5) * y;
    }

将n舍入到下一个0.05的倍数=>将n*2舍入到下一个0.1的倍数=>将n*2*10舍入到下一个更高的整数。你是想将0.05到0.10进行四舍五入,还是保持原样?你不是在双人房里存钱,对吧?
    // Rounds X to the nearest Y
    double round(double x, double y)
    {
        return floor(x / y + 0.5) * y;
    }