黑马程序员技术交流社区
标题:
一个计算题
[打印本页]
作者:
张建银
时间:
2012-2-7 00:08
标题:
一个计算题
float b=1.2;double c=2.6;
1+'a'++b+c= 谁知道结果是多少
作者:
张建银
时间:
2012-2-7 00:10
1+'a'+b+c=
作者:
Joyuang
时间:
2012-2-7 00:16
LZ这里写错了吧float b=1.2;应该写成float b=1.2f;或者强转成float类型。
改正错误之后结果是:101.79999694824218
float类型嘛,都是很精确的
作者:
秦碧
时间:
2012-2-7 00:19
float b=1.2;赋值是非法的
应该是float b=1.2f;
刚用程序跑了一下 结果为101.799999694824218
数据类型之间的有限关系为:byte,short,char-> int -> long -> float -> double(最高)
低优先级的加高优先级的需要都转换成高优先级的
所以最终结果为double型,至于不等于101.8 我想可能是一些转换过程中的精度损失吧。
作者:
黑马唐浩
时间:
2012-2-7 00:28
java中基本数据类型除了boolean型,都可以进行类型转换。
表示数范围小的数可以向表示数范围大的进行自动类型转换。
当把一个表示范围小的数值或变量赋给一个表示范围大的数时,
系统会进行自动类型转换以计算结果。
char
--->int--->long--->float--->double
byte--->short
作者:
黑马唐浩
时间:
2012-2-7 00:28
我记得这个大一时候讲C语言也是这样啊好像。
作者:
张伟~
时间:
2012-2-7 00:32
1+'a'++b+c ?
这叫什么运算
多写了个+号吗?
楼主问题也得把问题写清楚啊,还有那个float后面也没写f
像这种代码的话你自己写几行代码不就知道结果了吗
作者:
王文龙
时间:
2012-2-7 00:49
一是float类型数值后要加f,
否则失败;
二是类型转换:
char-->int-->float-->double,
最后终为double类型.
至于精度损失是很麻烦,
同学有兴趣可以baidu一哈.
作者:
毛溯澜
时间:
2012-2-7 09:18
float b=1.2;赋值是非法的
应该是float b=1.2f;
数据类型之间的有限关系为:byte,short,char-> int -> long -> float -> double(最高)低向高转
这个问题自己运行下不就好了!
作者:
孙汇川
时间:
2012-2-7 11:07
数据类型之间的转换关系要知道:byte,short,char-> int -> long -> float -> double(最高的)
float b=1.2后面少了个f;
赋值非法
应该是float b=1.2f;
作者:
王_涛
时间:
2012-2-7 11:32
1+'a'+b+c
1.在进行+运算时'a'字符会转换成ascii码值97进行
2.在进行+运算时,系统会进行自动类型转换以计算结果。
--->int--->long--->float--->double
作者:
何洪森
时间:
2012-2-7 12:45
首先应该提醒楼主,应该自己先编译一下,感觉与自己想的不一致,然后在把代码复制上去,两个明显的错误就是少个f,多个+号。
主要想说做程序一定要细心,否则小的粗心引起的bug,再回头很难找还会浪费很多时间,不过还是能知道你所问的问题是什么。
基本数据类型之间有一定的优先级顺序,在java中变量的优先级由低到高的排列顺序是:byte - (short , char) - int - long - float - double
自动类型转换:由优先级低的数据类型转向优先级高的数据类型。
所以字符'a'对应的asc码值是97,然后根据自动类型转换最终都会转成double型。我电脑运行的结果是:101.79999694824218
作者:
【专】【属】
时间:
2012-2-7 20:03
个人感觉,这种问题就不要问了,没有意义,如果想知道结果自己运行一下了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2