第2講 変数の学習
第10話 倍精度実数型
コード
#include<iostream>
#include <stdio.h>
using namespace std;
void main(){
    float a,b;
    double c,d;
    a=1; c=1;
    b=3; d=3;
    cout<<"単精度の場合"<<a/b<<endl;
    cout<<"倍精度の場合"<<c/d<<endl;
}
参考ファイル
による実験結果

と同じになってしまいました。
実はcoutは普通に使ったのでは小数第6位までしか表示されません。
小数第7以下まで表示させるには、
インクルードファイルiomanipをインクルードしておいて、
   cout <<"単精度の場合"<< setprecision(7) << a/b << endl;
のようにする必要があります。
setprecision(7) が小数第7位まで表示させよの命令なのです。

さて、コードを
#include<iostream>
#include <stdio.h>
#include <iomanip>
using namespace std;
void main(){
    float a,b;
    double c,d;
    a=1; c=1;
    b=3; d=3;
    cout<<"単精度の場合"<<a/b<<endl;
    cout<<"倍精度の場合"<<c/d<<endl;
   
cout<<"小数第6位まで"<<endl;
    cout <<"単精度の場合"<< setprecision(6) << a/b << endl;
    cout <<"倍精度の場合"<< setprecision(6) << c/d << endl;
    cout<<"小数第7位まで"<<endl;
    cout <<"単精度の場合"<< setprecision(7) << a/b << endl;
    cout <<"倍精度の場合"<< setprecision(7) << c/d << endl;
    cout<<"小数第8位まで"<<endl;
    cout <<"単精度の場合"<< setprecision(8) << a/b << endl;
    cout <<"倍精度の場合"<< setprecision(8) << c/d << endl;
    cout<<"小数第15位まで"<<endl;
    cout <<"単精度の場合"<< setprecision(15) << a/b << endl;
    cout <<"倍精度の場合"<< setprecision(15) << c/d << endl;

}
参考ファイル
と変更して実験をしてみると、

floatの場合小数第8位から表示が不正確です。
floatは約7桁の小数しか扱えないからです。
それに対して、doubleは約15桁まで扱えます。

それでは、いつでもdoubleの方を使った方が良いのでしょうか。
そうではありません。
使用メモリーが違うからです。
floatは4バイトであるのに対して、
doubleの場合はその倍の8バイトです。
使用メモリーは計算速度に大きな影響を与えます。
将来本講義では、数独自動生成アプリに挑戦しますが、
このアプリは膨大な量の計算を必要とします。

int型は4バイトであるのに対して、
次の話で学ぶchar型は1バイトです。
char型が扱える整数は−128〜127まですが、
数独=ナンプレの場合使う数字は1から9までの整数ですから、
char型で十分ということになります。
int型をchar型に変更するだけで計算速度は2〜3倍ほど速くなります。

ですから、扱う数字の範囲によって変数型は変えるべきなのです。



第9話へ
 第11話へ

a

魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座

初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
VC++ C言語 C++ 入門 初心者 基礎から応用まで
本サイトトップへ