2017年11月19日
《その142》 int型とdouble型の混在する計算 & p.97演習3-4
int型とdouble型の混在する計算
int型とdouble型の混在する計算では、int型数値は暗黙の型変換によって double 型に変換され、計算の精度が維持されます。
デフォルト桁数
標準では、double型で表示される場合のデフォルト桁数は 6桁になります。
6桁というのは、整数部分と小数部分を合わせた桁数です。
cout << 1.568 * 2.2156 << "\n";
cout << 123.5 * 506.22 << "\n";
cout << 1.5 * 22156.88 << "\n";
cout << 123.5 * 506322 << "\n";
cout << 1.568 * 232156 << "\n";
新版明解C++中級編 p.97 演習3-4
以下に示す形式の関数 f(x) を、台形公式によって積分した値を返却する関数 daikei を作成せよ。
double f(double x);
関数 daikei は、以下の形式とする。
double daikei(double x1, double x2, int n, double fp(double));
引数 x1 と x2 は積分区間の下限値と上限値であり、引数 n は積分区間の分割数である。
最後の引数 fp は、積分の対象となる関数へのポインタである。
// p97_演習3-4
#include <iostream>
using namespace std;
double f1(double x) {
return 3 * x * x;
}
double f2(double x) {
return x * x * x - 3 * x * x + 2 * x + 4;
}
double daikei(double x1, double x2, int n, double fp(double)) {
double d = (x2 - x1) / n; // 分割の幅(台形の高さとする)
double s = 0; // 面積
for (int i = 0; i < n; i++) {
s += (fp(x1) + fp(x1 + d)) * d / 2;
// 面積 = (上底 + 下底) * 高さ / 2
x1 += d;
}
return s;
}
int main() {
cout << "◆f(x) = 3 * x * x\n"
" ( 2 <= x <= 4, 分割数 6)\n";
cout << " 面積の計算値 : " << daikei( 2, 4, 6, f1) << '\n';
cout << " (実際の面積は : 56.0)\n";
cout << "◆f(x) = x * x * x - 3 * x * x + 2 * x + 4\n"
" ( 1 <= x <= 3, 分割数 15)\n";
cout << " 面積の計算値 : " << daikei( 1, 3, 15, f2) << '\n';
cout << " (実際の面積は : 10.0)\n";
}
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/6986856
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック