软讯网络 > 编程语言 > Java > 简单"温度转换"的java程序学习心得
【标 题】:简单"温度转换"的java程序学习心得
【关键字】:
java
【来 源】:http://blog.csdn.net/sunyfun/archive/2007/04/10/1559108.aspx
简单"温度转换"的java程序学习心得
编写一个应用程序,它读入一个华氏温度值F,将其转换为摄氏温度值C并显示出结果。转换公式如下:
C = 5.0 / 9.0 * (F – 32)
原先编写代码如下:
import java.util.Scanner;
public class DoesHuan
{
public static void main(String args[])
{
Scanner input = new Scanner(System.in);
int F;
double C;
System.out.println("请输入一个华氏温度F:");
F = input.nextInt();
C = 5.0 / 9.0 * (F - 32);
System.out.printf("转换成摄氏温度C=%d\n",C);
}
}
编译是通过,但是在运行时确出错。只要有点java基础的人可能都很容易看出,错误是出在那句画下滑线的,就是输出问题,从 JDK5.0开始java也支持了像C语言一样的格式化输出,上面的本意就是想以格式化的输出,但是在定格式时用的格式错了,打印出float才行,即把
C=%d改为C=%f。是能输出了,但是也带来了问题,因为结果要输出的是double,即更高我精确度,没办法,只能改输出语句了,把语句改为了System.out.println("转换成摄氏温度C="+C);即无格式输出限制,改过来之后我再运行,我输入了5输出的结果为-15.0,这时我又纳闷了,什么刚三位数啊,我想了大半天也想不出为什么,结果无意中自己再次运行时输入100,输出结果为37.77777777777778即输出了16位数,这时我才恍然大悟,原来是java的输出机制搞的鬼,输入5时程序能整除,,所以就输出了带1位的精确位数,而输入100时程序不能除尽,所以输出了14位的精确位。因此大家在进行数的运算时要留意一下,不要被程序语言本身的机制给弄糊涂了。