如果有小数点,则将值增加1



我的设想是,如果

47/15= 3.13333

我想把它转换成4,如果结果是小数我想把结果加1,现在我像这样做

        float res = ((float)(62-15) / 15);
        if (res.ToString().Contains("."))
        {
             string digit=res.ToString().Substring(0, res.ToString().IndexOf('.'));
             int incrementDigit=Convert.ToInt16(k) + 1;

        }

我想知道c#中是否有任何快捷方式或内置函数,以便我可以在不实现字符串函数的情况下快速完成此操作。

您的意思是要执行整数除法,但总是四舍五入吗?我怀疑你想要:

public static int DivideByFifteenRoundingUp(int value) {
    return (value + 14) / 15;
}

这完全避免了使用浮点运算——它只允许任何不是15的整数倍的值被四舍五入,因为整数运算的截断方式趋向于0。

请注意,对于负输入,不能工作-例如,如果您传入-15,这将返回0。您可以使用以下命令修复此问题:

public static int DivideByFifteenRoundingUp(int value) {
    return value < 0 ? value / 15 : (value + 14) / 15;
}

Use Math.Ceiling quotes MSDN:

返回大于或等于的最小整数值指定的十进制数

您正在寻找Math.Ceiling()

将必须的值转换为Decimal或Double类型,该方法的结果就是您所需要的。如:

double number = ((double)(62-15) / (double)15);
double result = Math.Ceiling(number);

注意,我将15转换为双精度类型,因此我避免了整数除法。这很可能不是你想要的。

另一种方法是对每个数字加0.5,然后取整数(截断小数点)。恐怕我现在没有访问c#编译器来确认确切的函数调用!

NB:但正如其他人证实的那样,我认为数学。天花板函数最能传达你的意图。

类似于

float res = ((float)(62-15) / 15);
int incrementDigit = (int)Math.Ceiling(res);

int incrementDigit  = (int)(res  + 0.5f);

最新更新