For循环计算相当于华氏温度Java的摄氏度

时间:2018-02-13 22:14:31

标签: java loops for-loop

我的这个程序有问题。我没有编译错误,但是当我运行它时没有显示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

2 个答案:

答案 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的更多信息