2 qq 28001881 qq_28001881 于 2015.07.07 21:11 提问

刚学java的新手遇到的问题

题目是这样的,编一程序,将摄氏度换为华氏度。公式为:f=c*9/5+32.其中f为华氏度,c为摄氏度。
以下是我的代码
import java.util.*;
public class Main{
public static void main (String[] args){
Scanner in1 = new Scanner(System.in);
int c =in1.nextInt();
double f = c*9/5+32;
System.out.println(f);
}
}
结果只有一位小数,不知道要怎样才能转换为2位小数

3个回答

tongyi55555
tongyi55555   2015.07.08 09:26
已采纳

c*9/5+32

你这个计算式子中都是整型参数,默认会取整的,计算结果不精确,需要最前面的参数转换为double进行计算,简单来讲就是乘以1.0,即计算式修改为:

double f = c*1.0*9/5+32; 

然后就是格式化的问题了,建议你使用java.text.DecimalFormat,其参数中可以指定小数的位数,如下面的小数点后面两个零表示两位小数,0和#的区别在于#在最前面和最后面代表0时不显示该位,0会强制显示为0。

double f = c*1.0*9/5+32; 
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(f));
qq_28001881
qq_28001881 谢谢!搞定了!
2 年多之前 回复
danielinbiti
danielinbiti   Ds   Rxr 2015.07.07 21:20

double f = c*1.0*9/5+32;//需要乘以一个小数1.0,不然不对
 BigDecimal   b   =   new   BigDecimal(f);  
double   f1   =   b.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();  
qq_28001881
qq_28001881 我已经改了可是结果还是只有一位小数
2 年多之前 回复
lingfeiwen
lingfeiwen   2015.07.08 09:34

上面两位网友都给出了解决办法,我就不再写代码了。

楼主学java,应该先把java的数据类型先研究一下。网上也有大把的总结资料。
c*9/5+32;这个算出来是整型,而且还有偏差,你觉得9/5等于多少,等于1的。先把数据类型掌握好吧。

Csdn user default icon
上传中...
上传图片
插入图片