FE_DOWNWARD, FE_TONEAREST, FE_TOWARDZERO, FE_UPWARD

来自cppreference.com
< cpp‎ | numeric‎ | fenv

定义于头文件 <cfenv>
#define FE_DOWNWARD     /*implementation defined*/
(C++11 起)
#define FE_TONEAREST    /*implementation defined*/
(C++11 起)
#define FE_TOWARDZERO   /*implementation defined*/
(C++11 起)
#define FE_UPWARD       /*implementation defined*/
(C++11 起)
这些宏常量扩展到一个非负整数常量表达式,可以使用std::fesetroundstd::fegetround表示支持浮点舍入模式之一。实现可以定义附加的舍入模式中的常量<cfenv>,都应该与FE_,然后由至少一个大写字母开始。每个宏定义,如果它支持.
原文:
Each of these macro constants expands to a nonnegative integer constant expression, which can me used with std::fesetround and std::fegetround to indicate one of the supported floating-point rounding modes. The implementation may define additional rounding mode constants in <cfenv>, which should all begin with FE_ followed by at least one uppercase letter. Each macro is only defined if it is supported.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
在大多数实现中,这些宏常量扩大FLT_ROUNDSstd::float_round_style的值等于的值
原文:
On most implementations, these macro constants expand to the values equal to the values of FLT_ROUNDS and std::float_round_style
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
常数
原文:
Constant
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
Explanation
FE_DOWNWARD
向负无穷大舍入
原文:
rounding towards negative infinity
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
FE_TONEAREST
向最接近的整数舍入
原文:
rounding towards nearest integer
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
FE_TOWARDZERO
向零舍入
原文:
rounding towards zero
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
FE_UPWARD
向正无穷大舍入
原文:
rounding towards positive infinity
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
额外的舍入模式可以支持一个实施.
原文:
Additional rounding modes may be supported by an implementation.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 示例

[编辑]
#include <cmath>
#include <cfenv>
#include <iostream>
 
int main()
{
    #pragma STDC FENV_ACCESS ON
    std::fesetround(FE_DOWNWARD);
    std::cout << "rounding using FE_DOWNWARD: \n" << std::fixed
              << " 12.0 ->  " << std::nearbyint(12.0) << '\n'
              << " 12.1 ->  " << std::nearbyint(12.1) << '\n'
              << "-12.1 -> " << std::nearbyint(-12.1) << '\n'
              << " 12.5 ->  " << std::nearbyint(12.5) << '\n'
              << " 12.9 ->  " << std::nearbyint(12.9) << '\n'
              << "-12.9 -> " << std::nearbyint(-12.9) << '\n'
              << " 13.0 ->  " << std::nearbyint(13.0) << '\n';
    std::fesetround(FE_TONEAREST);
    std::cout << "rounding using FE_TONEAREST: \n"
              << " 12.0 ->  " << std::nearbyint(12.0) << '\n'
              << " 12.1 ->  " << std::nearbyint(12.1) << '\n'
              << "-12.1 -> " << std::nearbyint(-12.1) << '\n'
              << " 12.5 ->  " << std::nearbyint(12.5) << '\n'
              << " 12.9 ->  " << std::nearbyint(12.9) << '\n'
              << "-12.9 -> " << std::nearbyint(-12.9) << '\n'
              << " 13.0 ->  " << std::nearbyint(13.0) << '\n';
}

输出:

rounding using FE_DOWNWARD:
 12.0 ->  12.000000
 12.1 ->  12.000000
-12.1 -> -13.000000
 12.5 ->  12.000000
 12.9 ->  12.000000
-12.9 -> -13.000000
 13.0 ->  13.000000
rounding using FE_TONEAREST: 
 12.0 ->  12.000000
 12.1 ->  12.000000
-12.1 -> -12.000000
 12.5 ->  12.000000
 12.9 ->  13.000000
-12.9 -> -13.000000
 13.0 ->  13.000000

[编辑] 另请参阅

指示浮点舍入模式
(枚举) [编辑]
(C++11)
(C++11)
获取或设置舍入的方向
原文:
gets or sets rounding direction
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(函数) [编辑]