黑马程序员技术交流社区

标题: 数据类型转换 [打印本页]

作者: 403383221    时间: 2013-4-17 09:21
标题: 数据类型转换
本帖最后由 403383221 于 2013-4-17 10:13 编辑

int a = 4000;
double b = (double)a/1000/100;
我想问的是,a是先转换成double型再运算呢,还是运算后再转换的?
而且,我如果这样写的话
int a = 4000;
double b = (float)a/1000/100;
System.out.println(b);
为啥结果是
0.03999999910593033
作者: 陈宇鹏    时间: 2013-4-17 10:02
首先,第一个,
肯定是先转换,因为“()”的原因,“()”优先级大于+、-、*、/。记着,以后写程序,不知道优先级怎么写优先级的时候,就直接用()就可以了,()是最优的
第二个
double 的有效位是14位
并且精度高于float
首先,float进行a的转换后,计算出来是0.04
这个时候,要将值赋值给b   float的类型就需要提升,但是在提升的过程中,就会损失精度。
作者: 403383221    时间: 2013-4-17 10:03
陈宇鹏 发表于 2013-4-17 10:02
首先,第一个,
肯定是先转换,因为“()”的原因,“()”优先级大于+、-、*、/。记着,以后写程序,不 ...

明白了,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2