最終更新日時: 2025年07月13日 13時07分37秒 (JST)
Koichi Murase が更新

履歴 編集

macro
<cfloat>

# LDBL_TRUE_MIN(C++17)

    #define LDBL_TRUE_MIN implementation-defined

## 概要

`long double` の正の最小値を表すマクロ。

このマクロは、非正規化数を含む、その環境での正の最小値を表すマクロである。非正規化数を表現できない、または非正規化数の有無を判定できない場合は、その型の最小正規化数以下の正数を表す。

`std::numeric_limits<long double>::denorm_min()` と等しい。

## 備考

- 規格で 1E-37（$10^{-37}$）以下であることが規定されている。

## 例

    #include <iostream>
    #include <iomanip>
    #include <cfloat>

    int main()
    {
      std::cout << std::setprecision(LDBL_DIG);

      std::cout << LDBL_HAS_SUBNORM << std::endl;
      std::cout << LDBL_MIN << std::endl;
      std::cout << LDBL_TRUE_MIN << std::endl;
    }

## 出力例

    1
    3.36210314311209351e-4932
    3.6451995318824746e-4951

## バージョン

### 言語

- C++17

### 処理系

- Clang: 8.0 ✅
- GCC: 9.1 ❌
- Visual C++: ??

## 参照

- WG14/N1378 `xxx_TRUE_MIN` macros for `<float.h>`
- P0063R3 C++17 should refer to C11 instead of C99
- P0175R1 Synopses for the C library