我正在尝试将华氏度转换为Celsius.Now我有一个错误,当我使用它时:
double fahrenheit=input.nextDouble();
double celsius= ( **5** /9)*(fahrenheit-32);(Error)
然后我再次尝试(5.0)那么它的工作原因是什么?
答案 0 :(得分:7)
值“5”和“9”是整数,5/9被视为0
而不是0.55
,这就是您得错答案的原因。当两个整数分开时,答案自动为floor()
。有必要将'5'和'9'中的任何一个写为5.0和9.0
更好的做法是始终将其同时写为5.0
和9.0
,或将其写为double(5)
和double(9)
由于乘法和其他操作大部分是递归的,因此该语句也可以正常工作。
(fahrenheit-32)*5/9;
因为语句以双值
答案 1 :(得分:3)
当您划分5/9
时,您将获得integer
输出,因为5
和9
都是integers
。但是您要划分5.0/9
然后你将integer
潜水倍值,所以输出是双倍的
您也可以(double)5/9
答案 2 :(得分:2)
然后我再次尝试给予(5.0)那么它的工作原因是什么?
5 / 9
除以整数(整数),并为您提供结果0
。 5.0 / 9
除以双打(可以包含小数部分的数字),因此您得到了正确的结果0.5555555555555556
。