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