黑马程序员技术交流社区
标题:
基本数据运算求解
[打印本页]
作者:
ㄗ灬Night|K
时间:
2013-10-7 16:50
标题:
基本数据运算求解
本帖最后由 ㄗ灬Night|K 于 2013-10-8 18:34 编辑
今天在看java基础知识时遇到一个题目,求解:
为什么 -0/3 结果是 0,而 -0.0/3.0 结果是 -0.0?
作者:
FFF
时间:
2013-10-7 17:06
本帖最后由 FFF 于 2013-10-7 19:55 编辑
这个是默认基本数据类型的问题:
-0/3 -0和3都是整形的int类型。而int类型的0格式为0,所以-0除3等于0
而-0.0/3.0默认的是double类型,而double类型的0格式为0.0,所以结果为0.0
如果算法和公式中有小数的,取小数的基本数据类型
如果在小数后加F或f(如0.12F或0.12f)则为float
如果小数后加D或d,或不加(如0.12D或0.12d或0.12)则为double类型
如果在数字后面加l则为int类型
我还记得有一个面试题是这样的
问:
输出System.out.ptintln(1+1l);
结果是什么?
正确的是输出为int类型的数字2
结果有人不小心把l看成是1输出为12,结果错了!
作者:
The_Wizard
时间:
2013-10-7 18:38
基本运算,先匹配操作数,操作数的类型都自动转换成 占用内存多的那个操作数的类型。然后除法运算,得出的结果的符号跟被除数的符号相同。被除数是负数,结果就是负数;被除数是正数,结果就是正数。
作者:
奋斗@zbt
时间:
2013-10-8 11:12
这是个关于数据类型方面的问题,首先前者被除数和除数都是整数类型(int)所以结果的数据类型为整型,
后者都是double类型的数据,结果自然是double类型的,双精度类型。
作者:
周志龙
时间:
2013-10-8 11:25
如果提问结束,请结贴
作者:
冯国强
时间:
2013-10-9 19:23
如果运算中有一个操作数为long/float/double型,那么结果就是对应的long/float/double
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2