A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王靖远 金牌黑马   /  2013-5-24 22:33  /  1937 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王靖远 于 2013-5-25 10:29 编辑

int i ;
double db;
i = (int)Math.pow(db, n);
这种方法的好处是不会丢失小数点后面的值,不过当double值过大时,即大于int类型值得范围时还是会改变原来的值;

这是我在网上看到的。求解释一下。为什么不会丢失小数点后面的值,我实验是丢了的。

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

4 个回复

正序浏览
slatop@qq.com 发表于 2013-5-24 23:44
又是数据类型,研究这个你要先明白内存分布。
一个内存单元就是一个关合线路,关为0,合为1,你可以把一 ...

网上说用数组转,可以不丢失精度哦。
回复 使用道具 举报
clp 发表于 2013-5-24 23:18
你的题目给的不完整,不能够理解那个函数代表的意思,一般来说double类型的数值转换成int型的,精度必定会 ...

用数组转可以不损失精度哦。
回复 使用道具 举报
又是数据类型,研究这个你要先明白内存分布。
一个内存单元就是一个关合线路,关为0,合为1,你可以把一个内存单元看做是一个格子 ,里面有电就是1没电就是0.每一个单元格子,被称为一个位,8个位是一个字节,
INT型:
一个int是4个字节,就是4*8=32个盒子,根据这32个盒子里有的没电有的有电,来代表一个2进制数。因为是32个开关,所以最大数是32个1,因为java中没有unsigned也就是无符号类型,所以第一个1必须用来代表是正数还是负数(1为负0为正)剩下31个1用来代表值,31个1转为十进制就是2147483647,最小是-2147483648,正数尾数是7,负数是8,因为还有一个0,算在正数里,正数和负数正好相同。
double型:
一个double是8个字节也就是8*8=64个盒子,其中第一位用来代表是符号位(1为负0为正),后面11位是指数位,其余52位是有效数字位,符号位就代表正负的没啥说的。指数位就是科学计数法中的E。记得应该是高中数学有教吧。指数位越大小数点越向左移,越小越向右移。有较数字位并不是说的最大值,说的是可以代表的最精确最长位数,double的有较位好像是15到16位吧,记不清楚了

int型根本就没有指数位,你怎么让他代表小数,double转int,从一个有指数转到一个没指数,小数能不丢才怪。
另外一般情况下float就够用了,有6到7位的有较数字,double比float大一倍,内存占用了多了一倍,运算速度上double也慢很多,没必要的情况下一般不使用。

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
你的题目给的不完整,不能够理解那个函数代表的意思,一般来说double类型的数值转换成int型的,精度必定会损失的,否则就没什么区别了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马