std::numeric_limits<T>::has_denorm_loss
ja.cppreference.net から
static const bool has_denorm_loss;
|
(C++11まで) | |
static constexpr bool has_denorm_loss;
|
(C++11以降) (C++23で非推奨) |
|
この値 std::numeric_limits<T>::has_denorm_loss は、非正規化数を作成する際の精度低下を、不正確な結果としてではなく、非正規化損失として検出するすべての浮動小数点型 true に対して T です(下記参照)。
標準特殊化
T
|
std:: numeric_limits < T > :: has_denorm_loss の値 |
| /* non-specialized */ | false |
| bool | false |
| char | false |
| signed char | false |
| unsigned char | false |
| wchar_t | false |
| char8_t (C++20以降) | false |
| char16_t (C++11以降) | false |
| char32_t (C++11以降) | false |
| short | false |
| unsigned short | false |
| int | false |
| unsigned int | false |
| long | false |
| unsigned long | false |
| long long (C++11以降) | false |
| unsigned long long (C++11以降) | false |
| float | 実装定義 |
| double | 実装定義 |
| long double | 実装定義 |
注記
標準に準拠したIEEE 754浮動小数点実装では、非正規化数(subnormal numbers)の生成に伴う精度低下が発生した場合、これを検出する必要があり、以下の2つの異なる方法のいずれかで対応することができます:
- 非正規化損失:提供された結果が、指数範囲が無制限であった場合に計算されるであろう結果と異なること。
- 不正確な結果:提供された結果が、指数範囲と精度の両方が無制限であった場合に計算されるであろう結果と異なること。
非正規化損失機構の実装は存在しない(精度損失は丸め後に検出され、不正確な結果として扱われる)。このオプションはIEEE Std 754の2008年改訂版で削除された。
libstdc++、libc++、libCstd、およびstlport4は、すべての浮動小数点型に対してこの定数を false と定義します。Microsoft Visual Studioは、すべての浮動小数点型に対して true と定義します。
浮動小数点演算全般と同様に、精度損失によって FE_INEXACT が発生する可能性があります。
例
|
このセクションは不完全です
理由: 例がありません |
関連項目
|
[static]
|
丸め前に微小値を検出する浮動小数点型を識別する
(public static member constant) |
|
[static]
|
浮動小数点型で使用される非正規化スタイルを識別する
(public static member constant) |