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

时间:2019-11-08 14:13:51

标签: c++ rounding

伙计们,我的四舍五入有点问题。

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

这里有一些例子:

4 -> 0

67 -> 65

23 -> 20

44 -> 40 

59 -> 55

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

有什么方法可以做到吗?

2 个答案:

答案 0 :(得分:2)

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

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import glob
import matplotlib.cm as cm

files = sorted(glob.glob('mesh_files/*.vtk'))
mesh = []

fig = plt.figure(figsize = (16, 10))
ax = plt.axes(projection = '3d')

colors = cm.rainbow(np.linspace(0, 1, len(files)))

for file in files:
    mesh.append(meshio.read(file).points)

    x = mesh[-1][:, 0]
    y = mesh[-1][:, 1]
    z = mesh[-1][:, 2]

    plt.scatter(x, y, z, color = colors[files.index(file)])

答案 1 :(得分:0)

如果您具有类型为 int 的变量,则可以利用以下事实:将它们与另一个 int 相除会得到一个整数,因此如果再次乘以这个号码,你 得到你想要的。

所以:

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

将输出55。

如果值未存储为整数,则可以在执行除法之前将其强制转换:

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