※ ChatGPTを利用し、要約された質問です(原文:円周の計算で妙な端数が出るのはなぜなのでしょう?)
円周の計算で妙な端数が出るのはなぜなのでしょう?
このQ&Aのポイント
円周の計算で妙な端数が出るの原因や回避策について調べてみました。
Javaで円周を計算するプログラムを実行すると、半端な数字が出力されることがあります。
これはコンピュータの内部処理によるものであり、仕組みや回避策についても説明します。
同様の質問が何度もあったかもしれませんが、検索しきれず投稿させていただくこととなりました。
申し訳ございません。
コンソールから数値(半径)を入力させて、円周を求めるプログラムです。
=================================================
public class ensyu {
public static void main(String args[])
throws IOException {
String kazu;
double hankei, enshu;
double pai = 3.14;
System.out.println("円の半径(cm)を入力?");
BufferedReader abc =
new BufferedReader(new InputStreamReader(System.in));
kazu = abc.readLine();
hankei = Double.parseDouble(kazu);
enshu = 2.0 * pai * hankei;
System.out.println("半径" + hankei + "cmのとき");
System.out.println("円周 = " + enshu + "cm");
}
}
=================================================
さてこのプログラムを実行すると、
例えば「6」と入力した時は、「37.68cm」と出力されますが、
「5」と入力すると、「31.400000000000002cm」という
きわめて半端な数字が出力されます。
3.14×2×5ということで、
暗算だったらとても喜ばれそうな計算しやすい値であるにもかかわらず、
このような値が出力されるのはなぜなのでしょう?
他にも「10」で「62.800000000000004cm」、
「2.5」で「15.700000000000001cm」となりましたが、
「12.5」の時は「78.5cm」と、ちゃんと小数第1位で止まりました。
実は仲間うちでJavaの勉強会を開いておりまして、
大半が初心者ですので、回避策というよりは
「なぜ?」の部分に特化してご教示いただけたらと存じます。
初歩的な質問でお恥ずかしい限りです・・・。
お手数をおかけいたしますが、
何卒よろしくお願い申し上げます。
お礼
遅くなりましたが、ありがとうございました。