如果有小数点,则将值增加1
本文关键字:增加 小数点 如果 | 更新日期: 2023-09-27 18:12:55
我的设想是,如果
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);