比如(int)(double d)这样转换是舍去小数取整,Convert.toint32(double d)是四舍五入取整,那我想要如果有小数直接进1取整,有没有这样的方法
用Math.Ceiling,通过向上进位取整函数。
例如:Math.Ceiling(32.4) 结果是33;Math.Ceiling(32.0) 结果是 32
与此对应的是向下舍位取整 Math.Floor。
第一种方式 强制类型转换
double d=1.5;
int i=(int)d;
强制类型转换采用的是截位方式,把小数点后面的数字统统舍弃,也就是说不管小数部分是几,哪怕是1.9也要舍弃,转换完会是1。
第二种方式 使用Round函数进行转换
double d=1.6
int i = Math.Round(d, 0);(保留0维小数就是取整)
第二种参数表示要保留的小数位数。
使用Round函数是四舍五入,而不是进行截位,保留小数点后面的数字。
例:Math.Floor(3.8)//返回小于或等于指定数字的最大整数,结果为3;
Math.Round(3.8)//将值舍入到最接近的整数或指定的小数位数,结果为4。
这两种转换方式要根据实际需要情况来进行转换。
例如:Math.Ceiling(32.4) 结果是33; Math.Ceiling(32.0) 结果是 32
与此对应的是向下舍位取整 Math.Floor。
例如: Math.Floor(32.6) 结果是32追问
顺便再问一个,%是整除取余,/是整除取商,我想计算得到小数用哪个啊
追答/是除法,不是整除取商。如果你的除数和被除数都是整数的话才是整除,如果其中一个是double的话,除出来的就是double。
如: 1 / 2 结果是 0, 而1.0 / 2 结果是 0.5
如果我想要
int m=5;
int n=2;
double d=m/n;
是不是要这样
double a= Math.Round((double)m, 1);
然后double d=a/n;
double d = (double)m / n;
或者
double d = m *1.0 / n;