猿问

看代码,为什么结果是87.0,而不是87.5?

(num1+num2)/2.0时结果为什么就是87.5?

sunny86
浏览 3239回答 15
15回答

qq_镇_0

因为num1和num2是int类型去除2以后再转换为double类型,所以除2时,结果还是int类型,没有小数点。

你去狗带

语句执行顺序为,,先计算num1+num2结果是int类型,然后计算/2(int/int=int),结果还是int,但是结果是87,小数点后面的丢失了。然后再赋值给avg将87转换为double型87.0.但是如果(num1+num2)/2.0就是(int/double=double)就不会发生数据丢失了,就会是87.5.

慕斯卡5018863

int类型不能被强制转化成double类型,所以avg还是int类型

weibo_我的太阳366_0

向上类型转换,比如一个整型+""就成字符串了

木子添

基本数据类型的自动转换和强制转换问题~

会飞的鱼666

语句执行顺序为:先计算num1+num2结果是int类型,然后计算/2(int/int=int),结果还是int,但是结果是87,小数点后面的丢失了。然后再赋值给avg将87转换为double型87.0.但是如果(num1+num2)/2.0就是(int/double=double)就不会发生数据丢失了,就会是87.5.

wl温良

因为num1和num2都是整形的,所以在(num1+num2)/2这些步距都是整形的,此时计算答案已经是87了,但如果除以 2.0就不一样了,一个整形数据和浮点型数据乘除会自动进行类型转换,结果会是浮点型,

lzjccc

两个整型的进行运算是不是得到一个整型,一个整型的结果赋给一个double类型的avg变量,所以结果就是87.0啊

shaonian

两个double类型相加会等于一个INT型?感觉是精度问题 可以用BigDecimal试试我也是网上看的不对见谅

侯礼

上面参数增加精度,改成94.00和81.00
随时随地看视频慕课网APP

相关分类

Java
我要回答