舍入数字(float)将它们存储为int,而不使用math.packe,如math.round()

时间:2014-04-11 12:16:04

标签: java floating-point int rounding

从摄氏度计算华氏温度的简单程序,但这可以不使用math.round()吗?

public class CelsiusZuFahreheit {
public static void main (String [] args){

    System.out.println("Temperature-Calculation");
    System.out.println("=======================");
    System.out.println("C       F");
    System.out.println("---------");

    for(int celsius = 0; celsius<=100; celsius+=3){
    float fahrenheit = (float)celsius * 9/5 + 32;
    int rFahrenheit = Math.round(fahrenheit);
    System.out.printf("%3d %5d\n", celsius, rFahrenheit);
    }

}
}

3 个答案:

答案 0 :(得分:2)

怎么样:

System.out.printf("%3d %5.0f\n", celsius, fahrenheit);

由于您仅仅为了演示目的而将值四舍五入,因此将此逻辑转换为字符串格式是有意义的。

此外,将值保持为一般两倍可能是一个好主意,因为83.23仍然是一个有效的温度值(如果您的要求发生变化,您需要打印2个小数位,它只会改变1个字符)。 / p>

答案 1 :(得分:0)

试一试:

int rFahrenheit = (int) (fahrenheit + (fahrenheit>=0 ? 0.5 : -0.5));

答案 2 :(得分:0)

您可以将华氏度转换为字符串格式。然后检查点字符。然后您可以打印该值,直到点字符