我的情况是,如果
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#中是否有任何快捷方式或内置函数,以便我可以快速完成此操作而无需实现字符串函数。
非常感谢。
答案 0 :(得分:9)
你是说你想进行整数除法,但总是四舍五入?我怀疑你想要:
public static int DivideByFifteenRoundingUp(int value) {
return (value + 14) / 15;
}
这样可以避免使用浮点运算 - 它只允许任何不是15的精确倍数的值被舍入,这是由于整数运算截断为零的方式。
请注意,不对负输入有效 - 例如,如果你传入-15这将返回0.你可以用以下方法解决这个问题:
public static int DivideByFifteenRoundingUp(int value) {
return value < 0 ? value / 15 : (value + 14) / 15;
}
答案 1 :(得分:5)
使用Math.Ceiling
引用MSDN:
返回大于或等于的最小整数值 指定的十进制数。
答案 2 :(得分:3)
您正在寻找Math.Ceiling()
。
将您拥有的值转换为Decimal或Double,并且该方法的结果就是您所需要的。像:
double number = ((double)(62-15) / (double)15);
double result = Math.Ceiling(number);
请注意我将15转换为double的事实,因此我避免整数除法。这很可能不是你想要的。
答案 3 :(得分:0)
另一种做你要求的方法是在每个数字上加0.5,然后将其置于底部(截断小数位)。我恐怕现在无法访问C#编译器以确认确切的函数调用!
注意:但是正如其他人已经证实的那样,我认为Math.Ceiling功能可以最好地与其他人沟通你想要的东西。
答案 4 :(得分:0)
类似的东西:
float res = ((float)(62-15) / 15);
int incrementDigit = (int)Math.Ceiling(res);
或
int incrementDigit = (int)(res + 0.5f);