找到一个数字的百分比

时间:2013-09-13 16:26:48

标签: c++ c performance algorithm

我想创建一个函数,它返回一个数字的百分比作为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 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:3)

您可以使用:

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

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

答案 2 :(得分: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);
}

答案 3 :(得分:0)

如果输入始终不是负数,您可以使用:

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

否则你需要这个:

int percent(int y){
    return (y >= 0 ? (y + 5) : (y - 5)) / 10;
}