single
倍精度数値
メニューを表示するにはスワイプしてください
float(7桁の10進精度)では精度が十分でない場合があります。しかし、C++にはその解決策としてdoubleがあります。15桁の10進精度を持ち、floatよりもはるかに高精度です。doubleの使用方法はこれまでと同じ構文です。
double.
1double num = 3.14159265359;
デフォルトでは、coutは浮動小数点数を有効数字6桁で表示します。そのため、floatとdoubleの違いは表示されません。より大きな精度を設定するには、std::cout << std::setprecision(15);を再度使用できます(これにより有効数字15桁に設定されます)。
<iomanip>を使用するには、std::setprecision()をインクルードすることを忘れないでください。
main.cpp
123456789101112131415#include <iostream> #include <iomanip> int main() { float pi_float = 3.14159265358979; double pi_double = 3.14159265358979; std::cout << "float pi: " << pi_float << std::endl; std::cout << "double pi: " << pi_double << std::endl; std::cout << std::setprecision(15); std::cout << "float pi with setprecision: " << pi_float << std::endl; std::cout << "double pi with setprecision: " << pi_double << std::endl; }
doubleでより高い精度が得られる理由
より多くのメモリを使用するため。float型は4バイト、double型は8バイトのメモリを消費。
long double型も存在。サイズは8バイト(doubleと同じ)から16バイトまで幅がある。システム上でのlong doubleのサイズは、次のコードで確認可能。
sizeof.h
1std::cout << sizeof(long double);
さらに、値を代入する際には L を追加する必要があります(そうしないと、その値は double の精度で代入されます)。次の例を参照してください。
double.h
1long double pi = 3.141592653589793238462643L;
出力にゼロが表示された場合は、上記のように値を正確に代入しているか確認してください(1/3., 1/3.L)。
スワイプしてコーディングを開始
異なるデータ型を用いて (1/3)² を計算する必要があります。そのために、float、double、long double 型の変数に 1/3 の値を代入します。次に、それぞれの数値を自分自身で掛けた結果を出力します。
float型の変数を値1/3.で初期化します。double型の変数を値1/3.で初期化します。long double型の変数を値1/3.Lで初期化します。
注:long doubleは本システム上で 16 バイトのメモリを使用します- 出力の精度を
setprecision(25)で小数点以下 25 桁に設定します。 - それぞれの値を自分自身で掛けた結果を出力します。
解答
フィードバックありがとうございます!
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください