0

我想创建一个函数,将数字的百分比返回为 int(在本例中为 10%,因此它将返回传入的 int 的 10%),例如,如果您传递 76,它将返回 8。本质上它就像下面的函数,但我认为必须有更好的方法来做到这一点。

int percent(int y){
    int x;
    if(y >= 95)
        return 10;
    else if(y >= 85)
        return 9;
    else if(y >= 75)
        return 8;
    ...
}
4

4 回答 4

10
int percent(int y){
   return (y + 5) / 10;
}

你在那里有整数除法,所以它可以用于舍入!

于 2013-09-13T16:29:44.223 回答
3

你可以使用这个:

int percent(int y){
    return (y + 5) / 10;
}

但我会给这个函数一个不同的名字,因为我不认为这是百分比的正常含义。

于 2013-09-13T16:29:44.020 回答
1

这适用于任何百分比,而不仅仅是 10。

    int CountPercentage(int input, int percentage)
    {
        long long x = static_cast<long long>(input) * static_cast<long long>(percentage);
        long long ret = x / 100;

        if (x - ret * 100 >= 50)
        ++ret;
        return static_cast<int>(ret);
    }

此外,如果您可以使用 WinAPI,您可以通过以下方式解决它:

int CountPercentage(int input, int percentage)
{
    return MulDiv(input, percentage, 100);
}
于 2013-09-13T17:02:14.010 回答
0

如果输入总是不是负数,你可以使用这个:

int percent(int y){
   return (y + 5) / 10;
}

否则你需要这个:

int percent(int y){
    return (y >= 0 ? (y + 5) : (y - 5)) / 10;
}
于 2013-10-21T21:01:57.640 回答