我的这个程序有问题。我没有编译错误,但是当我运行它时没有显示Celsius输出的小数点。
这是我的代码:
public class TempLoops {
public static void main(String args[]) {
int fahrenheit = 0;
System.out.println("Fahrenheit Celsius");
for ( fahrenheit = 0; fahrenheit <= 300; fahrenheit+= 20) {
System.out.printf("%5d ",fahrenheit);
double Celsius = (fahrenheit-32.0) * (5.0/9.0); // formula for celsius to fahrenheit conversion
System.out.printf("%5d", (int)Celsius );
System.out.println();
}
}
}
如何获得Celsius输出的小数点后面的数字?
以下是它看起来的样本输出 sample out
答案 0 :(得分:2)
更改此
System.out.printf("%5d", (int)Celsius );
到这个
System.out.printf("%0.2f", Celsius );
这将打印带有2位小数的centigrades。
获得整数输出的主要原因是因为你将float(像x.abcd这样的点数)转换为整数,切割剩下的碎片部分(仅产生x)。
答案 1 :(得分:0)
使用DecimalFormat解决您的问题。
工作代码:
import java.text.DecimalFormat;
public class TempLoops {
public static void main(String args[]) {
DecimalFormat f = new DecimalFormat("##.00"); // this will helps you to always keeps in two decimal places
int fahrenheit = 0;
System.out.println("Fahrenheit Celsius");
for ( fahrenheit = 0; fahrenheit <= 300; fahrenheit+= 20) {
System.out.printf(" "+fahrenheit);
double Celsius = (fahrenheit-32.0) * (5.0/9.0); // formula for celsius to fahrenheit conversion
System.out.printf("\t\t"+f.format(Celsius));
System.out.println();
}
}
}
请参阅 Java Docs 了解有关 DecimalFormat的更多信息