我有一个从公式计算的双精度列表。其中一个是例如88.32547。我想将它们转换为最接近10的整数倍,并将它们放在另一个变量中。
示例双a = 88.32547
导致int b = 90
或double a = -65.32547
导致int b = -70
。
答案 0 :(得分:2)
最简单的方法就是这样
int a = (round(x / 10.0) * 10)
除以10(向左移动小数点),四舍五入(得到最接近的整数)然后再乘以十。
答案 1 :(得分:2)
10*std::round(x/10)
您可能想要添加一个int cast:
int(10*std::round(x/10))
有关详细信息,请参阅http://en.cppreference.com/w/cpp/numeric/math/round
答案 2 :(得分:0)
将数字除以10,舍入为最接近的整数,再次乘以10。
示例:
对于四舍五入,您可以考虑使用std::round
。
答案 3 :(得分:0)
在我无法使用Round的情况下我使用了类似的东西(我需要一些特定的负整数):
bottomValue = floor(a/10)*10;
topValue = ceil(a/10)*10;
if(a-bottomValue < topValue-a)
return bottomValue;
else
return topValue;
如果你可以使用圆形:
roundValue = round(a/10)*10;
return roundValue;