我在 int 中有一个数字 (00-59),我想将其四舍五入为 5,例如 06 是 5,08 是 10。哦,07 也是 10。我该怎么做?
问问题
1501 次
8 回答
6
您可以使用以下代码。
int round_5(int num)
{
int t1;
t1= num%5;
if(t1>=2)
num+=(5-t1);
else
num-=t1;
return num;
}
main()
{
int num = 57;
num = round_5(num);
printf("%d",num);
return 0;
}
希望这可以帮助。
于 2012-10-31T16:18:44.297 回答
2
如果你想编写自己的轮函数,这里应该可以工作:
int round(int number, int round_by)
{
int whole = number / round_by;
char superior = ((number % round_by) >= (round_by / 2)) ? 1 : 0;
return (whole + superior) * round_by;
}
int main()
{
printf("%d\n", round(6, 5)); // 5
printf("%d\n", round(7, 5)); // 10
printf("%d\n", round(8, 5)); // 10
printf("%d\n", round(33, 10)); // 30
printf("%d\n", round(33, 5)); // 35
}
您可以将 5 替换为您想要的每个数字。
于 2012-10-31T16:19:07.393 回答
1
使用公式
rounded = (number / 5) * 5;
if ((number % 5) > 1)
rounded += 5;
于 2012-10-31T16:20:32.313 回答
0
这不是 C 特定的,但想法是一样的:
func roundToNearest(num someNumber, num roundToNearest)
{
return (round(someNumber / roundToNearest) * roundToNearest);
}
当然,这只是伪代码,在 C 语言的情况下,您需要转换为单曲才能从中获得任何有用的东西。
在 c 的情况下,round 来自math.h
于 2012-10-31T16:17:46.930 回答
0
如果您愿意深入研究浮点领域,可以执行以下操作:
int rounded = (int)(round((float)input / 5) * 5);
确保你#include <math.h>
. 请参阅此 ideone 示例。
于 2012-10-31T16:17:50.397 回答
0
查表怎么样
int 分钟 [60] = { 0,0,0,5,5,5,5,5,10,10,10, ... };
于 2012-10-31T16:18:41.457 回答
0
这应该有效:
unsigned int round5(unsigned int n)
{
return ((n + 2) / 5) * 5;
}
(假设+ 3
你想将 7 向上取整,尽管这看起来不自然。)
于 2012-10-31T16:19:28.273 回答
0
您可以使用以下代码:
//no -> number ro -> round off to
//ro = 5 in your case
int no, ro;
if(no%ro >= 2)
no = ((no/ro)+1)*ro;
else
no = (no/ro)*ro;
希望能帮助到你 !!
于 2012-10-31T18:01:29.143 回答