问题描述
- 刚学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位小数
解决方案
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));
解决方案二:
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();
解决方案三:
上面两位网友都给出了解决办法,我就不再写代码了。
楼主学java,应该先把java的数据类型先研究一下。网上也有大把的总结资料。
c*9/5+32;这个算出来是整型,而且还有偏差,你觉得9/5等于多少,等于1的。先把数据类型掌握好吧。
时间: 2024-09-27 19:07:15