void main()
{ double d = 10851261063702467;
int n,i,x;
x = 0x07f; for (i = 1; i < sizeof(int); i++) { x <<= 8; x |= 0x0ff; } //计算int表示的最大正数
if ( d>x ) n = x;
else if ( d<x ) n = -x;
else n=d;
printf("%d\n", n);
用MathCeiling,通过向上进位取整函数。
例如:MathCeiling(324) 结果是33;MathCeiling(320) 结果是 32
与此对应的是向下舍位取整 MathFloor。
第一种方式 强制类型转换
double d=15;
int i=(int)d;
强制类型转换采用的是截位方式,把小数点后面的数字统统舍弃,也就是说不管小数部分是几,哪怕是19也要舍弃,转换完会是1。
第二种方式 使用Round函数进行转换
double d=16
int i = MathRound(d, 0);(保留0维小数就是取整)
第二种参数表示要保留的小数位数。
使用Round函数是四舍五入,而不是进行截位,保留小数点后面的数字。
例:MathFloor(38)//返回小于或等于指定数字的最大整数,结果为3;
MathRound(38)//将值舍入到最接近的整数或指定的小数位数,结果为4。
这两种转换方式要根据实际需要情况来进行转换。
1、可以借助强制类型转换及循环来完成转化。比如double型数组darray转换为int型数组iarray的代码如下:
double[] darray = new double[10];//darray数组声明////darray数组初始化省略
int iarray=new int[darraylength];//声明int 数组iarray,长度同darray的长度
for (int i = 0; i < darraylength; i++){
iarray[i] = (int)darray[i]; //位置1
}
2、先生成一个double的外覆型Double,再用Double的intValue()得到int,这里代码部分大部分相同,只需将位置1的代码改为
iarray[i] = (new Double(darray[i]))intValue();3、当然也可以先将double型数据先转换为String类型,然后再转换为int类型,如位置1代码修改如下:
String s2 = s1substring(0, s1indexOf(""));
iarray[i] = IntegerparseInt(s2);一个变量 double x;
[java] view plain copy
不进行四舍五入 *** 作:
(int)x
进行四舍五入 *** 作:
IntegerparseInt(new javatextDecimalFormat("0")format(x))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)