すみません、下記のコードで

double ans5 = (7+32)/(double)5;
System.out.println("(7+32)/5は" + ans5 + "です。");

右辺のdoubleが何故つくのかわかりません。5はintでいいと思うのですが、出る答えdoubleなので左辺をdoubleで指定しますよね?ならば、出てくる答えも自然doubleになるのではないのでしょうか?
よく割り算の場合、左辺はdoubleで右辺の割る部分もdoubleで指定してありますすが、そういう決まりなんですか?

一度、消して実行したところ、やはり、小数点以下は切り捨てられていました。そういうものだと、このコードは分かっても他に応用が利かないので、詳しい方、教えてください。
かなり初心者ですがよろしくお願いします。」

A 回答 (4件)

 キャストの位置と演算結果の違いについては、以下のプログラムでわかると思います。



public class cast {

public static void main(String args[]) {

double Ans;

Ans = (7 + 32) / (double)5;
System.out.println("[1]演算の精度は精度の高いほうに合わせられる " + Ans);
Ans = (7 + 32) / 5.0;
System.out.println("[2]上と同じ " + Ans);

Ans = (7 + 32) / 5f;
System.out.println("[3]整数(5)を浮動小数点数に変換するときに誤差が出る " + Ans);
Ans = (7 + 32) / 5.0f;
System.out.println("[4]上と同じ " + Ans);

Ans = (double)(7 + 32) / 5;
System.out.println("[5]除算よりもキャストが優先なので一番上と同じ " + Ans);

Ans = (7 + 32) / 5;
System.out.println("[6]整数として演算した結果をdoubleに入れても小数部はなくなる " + Ans);
Ans = (double)((7 + 32) / 5);
System.out.println("[7]整数として演算した結果をキャストしても小数部はなくなる " + Ans);

};

}

 結果からわかるように、[1]と[2]、[3]と[4]の結果では誤差の出方がほんの少し違ってきますので、
それらの二つを混合して使うことは避ける(決り文句として片方の方法を使う)べきでしょう。
    • good
    • 0

Kanataさん、補足ありがとうございます。



「(32+7)/(double)5だと答えは7.8」これは勿論です。混合演算の規則どおりです。私も浮動小数点を扱って30年近くになりますから当然100も承知です。

「(32+7)/5」に対する説明のつもりでした。聊か説明が曖昧でしたね。
    • good
    • 0

解説自体はametsuchi様のものでいいのですが、


(32+7)/(double)5だと答えは7.8になるはずですよ。

基本的に計算は高い方に合わせれられるので、
(32+7)/(double)5 = 39.0/5.0になります。

ではでは☆
    • good
    • 0

JAVAだろうが、C++だろうが、Cだろうが、Fortranだろうが全く同じで、左辺のタイプに関係なく、右辺の計算途中で、整数同士なら整数タイプの演算になります。


7+32は=39で問題なし。問題は39/5です。39も5も整数ですから、一旦右辺の値は=7になります。これをdoubleにすると、=7.0

右辺の(double)は勿論Castです。(double)5ではなく、5.0と書けば問題ないはずです。

普通、実数値の定数は「5」などと書かずに「5.0」、「5.0f」などと書きます。

実はJAVAは経験がないので自信がないのですが、C++とこの辺は変わらんはず。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2001/05/01 22:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!

  • 好きだけどケンカばかり……そんな彼との結婚は?

    やたらとケンカが多いカップルというのはいる。それでも腐れ縁なのか長く交際し、いざ結婚しようと決めたときに、ふと思い悩む。こんなにケンカが多いのに、結婚して大丈夫? と。今回は「教えて!goo」に寄せられ...

  • ポンコツな日々:第125話「食べてもOK」

    日々のちょっとしたヘンな出来事を、1話完結形式の4コマで綴っていきます。時にするどく、時にやんわり、ありそうで無さそうな日常の1コマを切り取ってお届けします。

  • “罵声大会”に怒り心頭?名指しで苦情も……駅員泣かせの鉄道ファン

    時として人は趣味に没頭してしまうと、周囲に迷惑をかけてしまいがち。それが公共の場ならばなおさらである。「教えて!goo」に「何で鉄道ファンはマナーの悪い人が多いのでしょうか?」との質問を見つけた。鉄道愛...

  • たまランチ:第102話「ネコ好き」

    外ランチを愛してやまない元気な女子社員・たまちゃん(26)。オシャレなお店より「安くておいしい」お店が大好き! そんな女子力低めなたまちゃんの、色気より食い気な日々をつづります。

  • エルフ田さん:第125話「洗濯干しの『コツ』」

    エルフ(ファンタジーとかに出てくる長寿の種族)の「エルフ田」と、ただの人間である女子社員2人による日常ギャグ。エルフならではのズレたツッコミでバシバシ人間界の話題を斬っていきます。

おしトピ編集部からのゆる~い質問を出題中

お題をもっとみる


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ