四舍五入到最接近的五的倍数C++

Round down to the nearest multiple of five c++

四舍五入有点问题

我会将数字四舍五入到最接近的五的倍数。

这里有一些例子:

4 -> 0

67 -> 65

23 -> 20

44 -> 40 

59 -> 55

我尝试了不同的方法,但我做不到。

有什么方法可以做到吗?

假设您的号码以整数格式存储,您可以为此使用整数除法:

int a = 44;
int r = (a/5) * 5; //will round down to 40

如果你有 int 类型的变量,你可以利用将它们除以另一个 int 的事实得到一个整数,所以如果你再次乘以那个数字,你 得到你想要的。

所以:

int a = 59;
std::cout << ((a / 5) * 5) << "\n";

会输出 55​​。

如果值未存储为整数,您可以在执行除法之前转换它们:

float a = 59;
std::cout << ((static_cast<int>(a) / 5) * 5) << "\n";