探している値は次のとおりですmax_exponent10
。
10 nが浮動小数点型の表現可能な有限値となるような最大の正数n です。
この関係により、次のようになります。
ログ10 x = n
10 n = x
あなたの計算は、最初の方程式が機能する方法を見つけることです:
log10(numeric_limits<T>::max())
の定義は、 10 n + 1max_exponent10
を使用していることを説明していますが、 10 nはより小さいか等しいです。あなたが探しているものもそうです。numeric_limits<T>::max()
numeric_limits<T>::max()
numeric_limits<T>::max_exponent10
+ 1
1 の場所を説明するために、この例では as が必要になることに注意してください。(log 10 1 = 0 のため) したがって、表現するために必要な 10 桁の数字は次のnumeric_limits<T>::max()
ようになります。
numeric_limits<T>::max_exponent10 + 1
手動で検証したい場合は、ここで確認できます。
http://coliru.stacked-crooked.com/a/443e4d434cbcb2f6