Namespaces
Variants

std:: fmax, std:: fmaxf, std:: fmaxl

From cppreference.net
Common mathematical functions
Nearest integer floating point operations
(C++11)
(C++11)
(C++11) (C++11) (C++11)
Floating point manipulation functions
(C++11) (C++11)
(C++11)
(C++11)
Classification and comparison
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Types
(C++11)
(C++11)
(C++11)
Macro constants
定义于头文件 <cmath>
(1)
float fmax ( float x, float y ) ;

double fmax ( double x, double y ) ;

long double fmax ( long double x, long double y ) ;
(C++23 前)
constexpr /*floating-point-type*/

fmax ( /*floating-point-type*/ x,

/*floating-point-type*/ y ) ;
(C++23 起)
float fmaxf ( float x, float y ) ;
(2) (C++11 起)
(C++23 起为 constexpr)
long double fmaxl ( long double x, long double y ) ;
(3) (C++11 起)
(C++23 起为 constexpr)
SIMD 重载 (C++26 起)
定义于头文件 <simd>
template < class V0, class V1 >

constexpr /*math-common-simd-t*/ < V0, V1 >

fmax ( const V0 & v_x, const V1 & v_y ) ;
(S) (C++26 起)
附加重载 (C++11 起)
定义于头文件 <cmath>
template < class Integer >
double fmax ( Integer x, Integer y ) ;
(A) (C++23 起为 constexpr)
1-3) 返回两个浮点参数中的较大值,将 NaN 视为缺失数据(在 NaN 与数值之间选择数值)。 库为所有无 cv 限定的浮点类型提供了 std::fmax 的重载版本作为参数类型。 (since C++23)
S) SIMD 重载对 v_x v_y 执行逐元素的 std::fmax 运算。
(其定义参见 math-common-simd-t
(since C++26)
A) 为所有整数类型提供了额外的重载,这些类型被视为 double
(since C++11)

目录

参数

x, y - 浮点数或整数值

返回值

如果成功,返回两个浮点值中的较大者。返回值是精确的,且不依赖于任何舍入模式。

错误处理

此函数不受 math_errhandling 中指定的任何错误条件约束。

如果实现支持 IEEE 浮点算术 (IEC 60559),

  • 如果两个参数中有一个是 NaN,则返回另一个参数的值。
  • 仅当两个参数都是 NaN 时,才返回 NaN。

注释

此函数无需区分正负零的符号差异,但某些实现可能额外规定:若一个参数为 + 0 而另一个为 - 0 ,则返回 + 0

额外的重载并不需要完全按照 (A) 的形式提供。只需确保对于它们的第一个参数 num1 和第二个参数 num2 满足以下条件:

  • num1 num2 具有 long double 类型,则 std :: fmax ( num1, num2 ) 的效果等同于 std :: fmax ( static_cast < long double > ( num1 ) ,
    static_cast < long double > ( num2 ) )
  • 否则,若 num1 和/或 num2 具有 double 类型或整数类型,则 std :: fmax ( num1, num2 ) 的效果等同于 std :: fmax ( static_cast < double > ( num1 ) ,
    static_cast < double > ( num2 ) )
  • 否则,若 num1 num2 具有 float 类型,则 std :: fmax ( num1, num2 ) 的效果等同于 std :: fmax ( static_cast < float > ( num1 ) ,
    static_cast < float > ( num2 ) )
(C++23 前)

num1 num2 具有算术类型,则 std :: fmax ( num1, num2 ) 的效果等同于 std :: fmax ( static_cast < /*common-floating-point-type*/ > ( num1 ) ,
static_cast < /*common-floating-point-type*/ > ( num2 ) )
,其中 /*common-floating-point-type*/ num1 num2 类型间具有最高 浮点转换等级 和最高 浮点转换子等级 的浮点类型,整数类型的实参被认为具有与 double 相同的浮点转换等级。

若不存在具有最高等级和子等级的此类浮点类型,则 重载决议 不会从提供的重载中得到可用候选。

(C++23 起)

示例

#include <cmath>
#include <iostream>
int main()
{
    std::cout << "fmax(2,1)    = " << std::fmax(2, 1) << '\n'
              << "fmax(-Inf,0) = " << std::fmax(-INFINITY, 0) << '\n'
              << "fmax(NaN,-1) = " << std::fmax(NAN, -1) << '\n';
}

输出:

fmax(2,1)    = 2
fmax(-Inf,0) = 0
fmax(NaN,-1) = -1

参见

(C++11)
检查第一个浮点参数是否大于第二个
(函数)
(C++11) (C++11) (C++11)
两个浮点值的较小者
(函数)
返回给定值中的较大者
(函数模板)
返回范围内的最大元素
(函数模板)
(C++11)
返回两个元素中的较小者和较大者
(函数模板)
返回范围内的最小和最大元素
(函数模板)
C 文档 for fmax