数値が浮動小数点表現で一方向に表現されているかどうか、より大きなサイズの表現で同じように表現されるかどうか疑問に思っています。つまり、数値が a として特定の表現を持っている場合、それがa にキャストされたfloat
場合は同じ表現になり、 aにキャストされた場合も同じになります。float
double
long double
私は BigInteger 実装を作成していて、渡された浮動小数点数を a を受け入れる関数に送信しlong double
て変換しているので、疑問に思っています。それが私の次の質問につながります。明らかに、浮動小数点は常に正確な表現を持っているとは限りません。std::cout << std::fixed << someFloat;
渡された数値と同じでなくても、与えられた数値と同じ数値を表現しようとするのは合理的ですか?それは私が得ることができる最も正確な表現ですか? もしそうなら、 ...
その値を抽出する最良の方法は何ですか (基数は 10 の累乗)。現時点では、それを文字列として取得し、文字列コンストラクターに渡しています。これは機能しますが、もっと良い方法があると感じずにはいられませんが、基数で割ったときに剰余を取ることは浮動小数点数では正確ではありません。
最後にuintmax_t
、システム上で常に最大の浮動小数点型となる型名である に相当する浮動小数点があるのか、それとも がlong double
常に最大になるため (たとえそれがダブル)。
ありがとう、T.