前章までは、整数なら整数同士、実数は実数同士で計算を行ってきました。
整数と実数とで混合計算を行ったことはありませんでした。
整数と実数との混合計算とは、例えば、1.03×9 のような計算のことです。
この計算では、実数×整数の計算が行われています。
この様な場合、その答えはどのようになるのでしょうか。
結論から言ってしまうと、この場合、結果は実数になります。
C言語では、整数と実数で計算した場合の結果は実数に変換されます。
これは、結果を整数にしてしまうと、実数部分がなくなってしまうためです。
次のプログラムは、実際に 1.03×9 を計算してみる例です。
このプログラムの実行結果は、次の通りになります。#include <stdio.h> int main(void) { printf("%f\n",1.03 * 9); return 0; }
確かに、答えは実数に変換されていることがわかると思います。
9.270000
明らかに、おかしな値になっていることがわかります。
-10486
整数と実数の計算では、答えは実数になることがわかりました。
しかし、場合によっては、整数の答えの方が都合が良い場合も考えられます。
例えば、消費税の計算は、金額×1.05 (2004/09/14現在)という数式ですが、
この計算を普通に行うと、答えは実数になってしまいます。
金額に小数が含まれるのは不自然です。
もし、実数を、整数に変換する方法があれば、この問題は解決します。
C言語には、型を強制的に変換する機能として、キャスト変換があります。
キャスト変換の使い方は、次の通りになります。
[ キャスト変換 ]
強制的に型を変換する機能
(変換する型名)数値や変数名例えば、実数値である 1.05 を整数に変換したい場合 (int)1.05 とすることで、
この方法を使用すれば、消費税の計算も可能になります。
次のプログラムは、360円の商品の消費税を求める例です。
このプログラムの実行結果は、次の通りになります。#include <stdio.h> int main(void) { printf("%d\n",(int)(1.05 * 360)); return 0; }
このプログラムで、1.05×360 に () をつけて計算しているのは、
378
キャスト変換は、当然、変数に使用することも可能ですし、使い方も同じです。