2011年7月4日月曜日

光の進む早さの計算

光の進む早さを30万㌔として、光が一日に進む距離の計算
public class Q31 {
public static void main(String[] args){
//正解
System.out.println("光が一日にすすむ距離は" + (24 * 60 * 60 * 300000L) + "kmです。");
System.out.println("光が一日にすすむ距離は" + (long)24 * 60 * 60 * 30000 + "kmです。");
System.out.println("光が一日にすすむ距離は" + (300000.0 * 60 * 60 * 24) + "kmです。");
System.out.println("光が一日にすすむ距離は" + (double)300000 * 60 * 60 * 24 + "kmです。");

//誤り
System.out.println("光が一日にすすむ距離は" + (24 * 60 * 60 * 300000) + "kmです。");

}
}

上から
光が一日にすすむ距離は25920000000kmです。
光が一日にすすむ距離は2592000000kmです。
光が一日にすすむ距離は2.592E10kmです。
光が一日にすすむ距離は2.592E10kmです。
光が一日にすすむ距離は150196224kmです。
と表示される。
------------------------------------
計算にもいろいろやり方がある。
★30万㌔メートルはオーバフローを起こすのでlong型の定数かdouble型をつけてあげる。
以下は、どちらも同じ書き方の違い。
◯long型
System.out.println("光が一日にすすむ距離は" + (24 * 60 * 60 * 300000L) + "kmです。");
System.out.println("光が一日にすすむ距離は" + (long)24 * 60 * 60 * 30000 + "kmです。");

◯double型
System.out.println("光が一日にすすむ距離は" + (300000.0 * 60 * 60 * 24) + "kmです。");
System.out.println("光が一日にすすむ距離は" + (double)300000 * 60 * 60 * 24 + "kmです。");

なんにも型指定しないと誤った数値が表示される
System.out.println("光が一日にすすむ距離は" + (24 * 60 * 60 * 300000) + "kmです。");

0 件のコメント:

コメントを投稿