回答編集履歴
1
typo
answer
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
この問題に対処できる`有効数字 x 10のn乗`と言う表現を[数学で習う](http://media.qikeru.me/%E6%9C%89%E5%8A%B9%E6%95%B0%E5%AD%97%E8%A8%88%E7%AE%97/)と思います。その表現をコンピュータの通常の文字で表現したものが、`1.12043e+015`です。
|
11
11
|
|
12
|
-
double型の一般的な有効桁数は10進数の場合、概ね16桁ですので、この範囲に限定することで10の指数表現にしないことが狙えます。例えばデフォルト値を`min=-9999999999999999`、max=
|
12
|
+
double型の一般的な有効桁数は10進数の場合、概ね16桁ですので、この範囲に限定することで10の指数表現にしないことが狙えます。例えばデフォルト値を`min=-9999999999999999`、`max=9999999999999999`にするなど。
|
13
13
|
|
14
14
|
しかし、std::streamの標準では16桁もの有効数字を表示しませんので、16桁の精度で表示するよう指示することで指数表現させないことが可能です。<iomanip>にあるstd::setprecision()を使います。
|
15
15
|
|
@@ -29,4 +29,4 @@
|
|
29
29
|
|
30
30
|
> ちゃんとした引数を与えて ( ただし min != maxであること。例えば、(0.53, 100.35) 等。 ) やってみると、
|
31
31
|
|
32
|
-
この場合は、minとmaxが`min=-9999999999999999`、max=
|
32
|
+
この場合は、minとmaxが`min=-9999999999999999`、`max=9999999999999999`の範囲に入り、かつ、std::ostreamのデフォルトの有効桁数(たぶん6桁)に入っているので指数表現にならなかっただけです。
|