• ベストアンサー

0にならないはずなのに0になってしまいます.

Z=√(50√3),z=9.306049とおいてe=z-Zを求めるプログラムを次のように作ったのですが,コンパイルしたら0になってしまいます.分かる方ぜひ教えてください.お願いします. #include<stdio.h> #include<math.h> main() { int z,Z,e,p; z=9.306049; Z=sqrt(50*sqrt(3)); e=z-Z; printf("e=%d\n",e); }

質問者が選んだベストアンサー

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

> printf("e=%d\n",e); eをdoubleにしたのなら、%dではダメです。 %fとか%gとか、浮動小数点数に対応している 書式文字列を使ってください。

その他の回答 (2)

  • okg00
  • ベストアンサー率39% (1322/3338)
回答No.2

>z=9.306049 int型なのでzには9が代入 >Z=sqrt(50*sqrt(3)); 同じく、Zには9が代入 >e=z-Z eが0なのは必然 型を見直してください。 ただ、単純にdouble型にしてしまうとz≒Zなので表示の際に大変なので指数表記にしてみてください。

ayashun
質問者

補足

ご返答ありがとうございます. double型にしてみたのですが,e=-1375731712と値が出てきました.これは明らかにおかしいとおもうのですが,なぜでしょうか?Zのところのsqrtの入力が間違っているのでしょうか.初歩的な質問ですみません.ぜひ教えてください.

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

> int z,Z,e,p; なにゆえint型なのでしょう? 扱っている数値の型を再度確認してください。

関連するQ&A

専門家に質問してみよう