2 qq 34114835 qq_34114835 于 2016.03.03 11:03 提问

JAVA初学者,望大神指教

F =((9/5)*C+32); 这句哪里错了吗?为什么那个32加不上?
图片说明

7个回答

shsongtao
shsongtao   2016.03.03 11:24
已采纳

主要是因为5/9和9/5导致的, 5/9按int来算是0,然后加上32 还是32 9/5按int算是1 加上32是69 所以,你要想得到结果 需要((int)((double)(9/5)*C) +32)

qq_34114835
qq_34114835 大神,我按着你的方法试了下,为什么还是不行啊((int)((double)(9/5))*C)+32;
接近 2 年之前 回复
qq_34114835
qq_34114835   2016.03.03 11:16

图片说明重新写了下,怎么又变前面加不上了

qq_28114533
qq_28114533 回复qq_34114835: (5/9)*C=0
接近 2 年之前 回复
qq_34114835
qq_34114835 好吧。这个是我把9/5.写成5/9了。还请大神帮忙讲解下原问题
接近 2 年之前 回复
shsongtao
shsongtao   2016.03.03 11:25

强转下9/5的类型 然后计算出的结果 再次强转回来 然后就能得到结果了

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.03.03 11:28

主要是因为/这个算数操作的结果,因为你定义的F变量是int整型,所以9/5的结果是1,而5/9返回的是0。还是先确定下你的计算公式吧。

qq_34114835
qq_34114835 回复毕小宝: F =((double)(9/5))*C+32;为什么这样不行
接近 2 年之前 回复
wojiushiwo945you
wojiushiwo945you 回复宋的纸鸢: 分子分母均为double类型时,结果也会强制转换成小数的。
接近 2 年之前 回复
qq_34114835
qq_34114835 我刚尝试把(9/5)改成了(9.0/5.0)发现能得出正确结果了。
接近 2 年之前 回复
qq_34114835
qq_34114835 大神,我试了下这样。可还是不行啊System.out.print("请输入一个摄氏温度:"); Scanner in = new Scanner (System.in); double C = in.nextDouble(); double F; F =((double)(9/5))*C+32;
接近 2 年之前 回复
qq_34114835
qq_34114835 大神,我试了下这样。可还是不行啊System.out.print("请输入一个摄氏温度:"); Scanner in = new Scanner (System.in); double C = in.nextDouble(); double F; F =((double)(9/5))*C+32;
接近 2 年之前 回复
b328361744
b328361744   2016.03.03 11:31

int 为整形,9/5得1 5/9得0 如果要算上小数,请改为double

u012197489
u012197489   2016.03.03 12:16

int为整形,所有9/5为1,1*C=37,37+32=69

Be_Proud
Be_Proud   2016.03.03 12:42

int 为整形,9/5得1 5/9得0 如果要算上小数,请改为double

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!