下記のプログラムについて、例えば、上辺=5、下辺=4、高さ=3と入力したとき、答えが「13.500000」と表示されるはずが、「13.000000」と表示されてしまいます。
一番下のprintfに「(a+b)*c/2.0」を直接入力すると正解が表示されます。xに代入するとダメな理由を教えてください。
質問です
Re: 質問です
整数型変数 x に 13.500000 という実数は 入りっこなく 13 がはいりますよ。
それを double にキャストしても 、「13.000000」ですよね!
実数型変数 を使わないといけません。
printf に直接書いたときは 実数にキャストされた状態(2.0があるから)問題ないですよ。
実行してみました。
エンバカデロC 使用
それを double にキャストしても 、「13.000000」ですよね!
実数型変数 を使わないといけません。
printf に直接書いたときは 実数にキャストされた状態(2.0があるから)問題ないですよ。
#include <stdio.h>
int main(void)
{
int a,b,c,x; // 整数型
float dx; // 実数型
printf("台形の面積を求めます: ");
printf("上辺 = ");
scanf("%d",&a);
printf("下辺 = ");
scanf("%d",&b);
printf("高さ = ");
scanf("%d",&c);
dx=( (a + b) * c )/2.0; // 左辺が実数型でないといけない!
printf("面積は%fです。\n",(double)dx);
return 0;
}
エンバカデロC 使用
C:\19\19c\bcc32>"C:\Program Files (x86)\Embarcadero\Studio\20.0\bin\bcc32" main.cpp
Embarcadero C++ 7.40 for Win32 Copyright (c) 1993-2017 Embarcadero Technologies, Inc.
main.cpp:
Turbo Incremental Link 6.90 Copyright (c) 1997-2017 Embarcadero Technologies, Inc.
C:\19\19c\bcc32>dir main.exe
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は 7813-6100 です
C:\19\19c\bcc32 のディレクトリ
2019/05/04 14:34 77,312 main.exe
1 個のファイル 77,312 バイト
0 個のディレクトリ 118,872,485,888 バイトの空き領域
C:\19\19c\bcc32>main.exe
台形の面積を求めます: 上辺 = 5
下辺 = 4
高さ = 3
面積は13.500000です。
C:\19\19c\bcc32>pause
続行するには何かキーを押してください . . .
Re: 質問です
なるほど!Math さんが書きました: ↑4年前整数型変数 x に 13.500000 という実数は 入りっこなく 13 がはいりますよ。
それを double にキャストしても 、「13.000000」ですよね!
実数型変数 を使わないといけません。
printf に直接書いたときは 実数にキャストされた状態(2.0があるから)問題ないですよ。
実行してみました。#include <stdio.h> int main(void) { int a,b,c,x; // 整数型 float dx; // 実数型 printf("台形の面積を求めます: "); printf("上辺 = "); scanf("%d",&a); printf("下辺 = "); scanf("%d",&b); printf("高さ = "); scanf("%d",&c); dx=( (a + b) * c )/2.0; // 左辺が実数型でないといけない! printf("面積は%fです。\n",(double)dx); return 0; }
エンバカデロC 使用C:\19\19c\bcc32>"C:\Program Files (x86)\Embarcadero\Studio\20.0\bin\bcc32" main.cpp Embarcadero C++ 7.40 for Win32 Copyright (c) 1993-2017 Embarcadero Technologies, Inc. main.cpp: Turbo Incremental Link 6.90 Copyright (c) 1997-2017 Embarcadero Technologies, Inc. C:\19\19c\bcc32>dir main.exe ドライブ C のボリューム ラベルがありません。 ボリューム シリアル番号は 7813-6100 です C:\19\19c\bcc32 のディレクトリ 2019/05/04 14:34 77,312 main.exe 1 個のファイル 77,312 バイト 0 個のディレクトリ 118,872,485,888 バイトの空き領域 C:\19\19c\bcc32>main.exe 台形の面積を求めます: 上辺 = 5 下辺 = 4 高さ = 3 面積は13.500000です。 C:\19\19c\bcc32>pause 続行するには何かキーを押してください . . .
そうでしたか!
わかりやすい説明をしてくださってありがとうございます。