• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語で計算が合いません(初心者))

C言語の計算が合わない!初心者の悩み解決方法

このQ&Aのポイント
  • 簡単な計算のプログラミングをしているが、計算が合わないと困っている初心者のための解決方法を紹介します。
  • プログラム内で整数型変数と実数型変数を定義し、計算を行っていますが、正しい結果が得られていないようです。
  • プログラムのロジックに問題があり、整数型変数を実数型変数で割る際に誤った計算になってしまっている可能性があります。

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

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

型を明示して書くとこう: #include<stdio.h> int main( void ){ int a,c,d; double b,e,f,ans; a = (int)7; b = (double)2.4; c = (double)0.5 * (double)a * (double)b; printf("%d\n", (int)c ); d = (double)( (int)a / (int)2 ) * (double)b; printf("%d\n", (int)d ); e = (double)0.5 * (double)a * (double)b; printf( "%lf\n", (double)e ); f = (double)( (int)a / (int)2 )* (double)b; printf( "%lf\n", (double)f ); return 0; } で、これを踏まえて、整数型と浮動小数点型が混在したときどういう計算をするかを理解すればよいかと。 http://www.google.com/search?hl=ja&q=%E6%9A%97%E9%BB%99%E3%81%AE%E5%9E%8B%E5%A4%89%E6%8F%9B&aq=0r&aqi=g-r6g-mr4&aql=&oq=%E3%81%82%E3%82%93%E3%82%82%E3%81%8F%E3%81%AE%E3%81%8B%E3%81%9F&gs_rfai=

tvgxx
質問者

お礼

解答ありがとうございます URLも参考にさせてもらいます

その他の回答 (3)

  • BuriBuri4
  • ベストアンサー率28% (150/525)
回答No.4

d=a/2*b; f=a/2*b; a/2が整数演算になるので小数点以下が切り捨てられる d=a/2.0*b; f=a/2.0*b; にすれば実数演算になる。 2はintに展開されるが2.0ならdoubleに展開される。 int/intはint型で計算されるがint/doubleはdouble型で計算される。

tvgxx
質問者

お礼

>int/intはint型で計算されるがint/doubleはdouble型で計算される。 これでわかりました ありがとうございます

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.3

>c = (int)((double)0.5 * (double)a * (double)b); うぉっと、そのとおりです。

tvgxx
質問者

お礼

追記ありがとうございます

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

ん? c の計算は c = (int)((double)0.5 * (double)a * (double)b); では>#1. d も同様に, 最後に int へのキャストが入る.

tvgxx
質問者

お礼

解答ありがとうございます 少し分かってきました

関連するQ&A