gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 11:30:58 25 4
gpt4 key购买 nike

好的 - 我几乎很尴尬在这里发布这个(如果有人投票关闭,我会删除),因为这似乎是一个基本问题。

这是在 C++ 中四舍五入为数字的倍数的正确方法吗?

我知道还有其他与此相关的问题,但我特别想知道在 C++ 中执行此操作的最佳方法是什么:

int roundUp(int numToRound, int multiple)
{
if(multiple == 0)
{
return numToRound;
}

int roundDown = ( (int) (numToRound) / multiple) * multiple;
int roundUp = roundDown + multiple;
int roundCalc = roundUp;
return (roundCalc);
}

更新:对不起,我可能没有明确意图。以下是一些示例:

roundUp(7, 100)
//return 100

roundUp(117, 100)
//return 200

roundUp(477, 100)
//return 500

roundUp(1077, 100)
//return 1100

roundUp(52, 20)
//return 60

roundUp(74, 30)
//return 90

最佳答案

这适用于正数,不确定负数。它只使用整数数学。

int roundUp(int numToRound, int multiple)
{
if (multiple == 0)
return numToRound;

int remainder = numToRound % multiple;
if (remainder == 0)
return numToRound;

return numToRound + multiple - remainder;
}

编辑:这是一个适用于负数的版本,如果“向上”是指始终 >= 输入的结果。

int roundUp(int numToRound, int multiple)
{
if (multiple == 0)
return numToRound;

int remainder = abs(numToRound) % multiple;
if (remainder == 0)
return numToRound;

if (numToRound < 0)
return -(abs(numToRound) - remainder);
else
return numToRound + multiple - remainder;
}

关于c++ - 四舍五入到一个数字的最接近的倍数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3407012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com