将double转换为10的int倍数

时间:2016-02-15 08:53:21

标签: c++ rounding

我有一个从公式计算的双精度列表。其中一个是例如88.32547。我想将它们转换为最接近10的整数倍,并将它们放在另一个变量中。

示例双a = 88.32547导致int b = 90double a = -65.32547导致int b = -70

4 个答案:

答案 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。

示例:

  • 10×round(88.32547 / 10)= 10×round(8.832547)= 10×9 = 90
  • 10×圆(-65.32547 / 10)= 10×圆(-6.532547)= 10×-7 = -70

对于四舍五入,您可以考虑使用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;