C言語で計算が合いません(初心者)
簡単な計算のプログミングをしているのですが
計算が合わなくて困っています。
整数型変数aと実数型変数bを定義
整数型変数cとdを定義して、c=0.5*a*b、d=a/2*b
実数型変数eとfを定義して、e=0.5*a*b、f=a/2*b
という内容のプログラムを作ったのですが
a=7,b=2.4を代入してみた結果
----------------------------
Input a>>7
Input b>>2.4
8
7
8.400000
7.200000
----------------------------
となりました
どこが間違っているのでしょう?
答えは8.4でcが8なのは有効数字のためだと思いますが
dとeで答えが全く違う理由が分かりません。
下に私が書いたものを貼っています。
----------------------------
#include<stdio.h>
int main(void){
int a,c,d;
double b,e,f,ans;
printf("Input a>>");
scanf("%d",&a);
printf("Input b>>");
scanf("%lf",&b);
c=0.5*a*b;
printf("%d\n",c);
d=a/2*b;
printf("%d\n",d);
e=0.5*a*b;
printf("%lf\n",e);
f=a/2*b;
printf("%lf\n",f);
return 0;
}
----------------------------
よろしくお願いします。
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%E …
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型で計算される。
>int/intはint型で計算されるがint/doubleはdouble型で計算される。
これでわかりました
ありがとうございます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# C言語(構造体) 3 2022/07/05 20:08
- C言語・C++・C# C言語: ポインタ 5 2022/06/01 08:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
float型とdouble型の変数の違い...
-
doubleの変数にintとintの割り...
-
C言語 関数プロトタイプ宣言の...
-
C言語で台形公式を使った二重積...
-
関数におけるif文とreturn文に...
-
C言語(プログラミング)関連の質...
-
C言語を実行すると-infが出てき...
-
C 開放してるのにエラー(doubl...
-
数値を指数部と仮数部に分離したい
-
マチンの公式による円周率のプ...
-
至急です! マクロ定義で #defi...
-
C# 分秒表示ついて
-
c言語で、繰り返し文の中で、0....
-
C言語でdouble型の小数点の引き...
-
学校の課題で2次方程式のプログ...
-
ニュートン法
-
C言語で表記についの質問です
-
c言語の問題
-
2分法で方程式の複数の解を自...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
float型とdouble型の変数の違い...
-
doubleの変数にintとintの割り...
-
C言語を実行すると-infが出てき...
-
C 開放してるのにエラー(doubl...
-
至急です! マクロ定義で #defi...
-
c言語で、繰り返し文の中で、0....
-
関数におけるif文とreturn文に...
-
C言語 関数プロトタイプ宣言の...
-
C言語初心者 構造体 課題について
-
C言語の型による処理速度の違い
-
Cで3乗根を求める方法
-
C言語で-23乗を取り扱うには
-
2分法で方程式の複数の解を自...
-
doubleは常に%lfとするべきなのか
-
c言語のコンパイルエラー canno...
-
C言語で直角三角形の斜辺を求め...
-
C言語のプログラムで#include<m...
-
int とdoubleの比較
-
C++で外積
おすすめ情報