double 转 int

double 转 int,第1张

#include<stdioh>
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 s1 = StringvalueOf(darray[i]);
String s2 = s1substring(0, s1indexOf(""));
iarray[i] = IntegerparseInt(s2);

一个变量 double x;
[java] view plain copy
不进行四舍五入 *** 作:
(int)x
进行四舍五入 *** 作:
IntegerparseInt(new javatextDecimalFormat("0")format(x))


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12904685.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存