C+中的nextafter vs nextoward函数+;2011? < C++ > 2011标准库的NEXTAFFTER与NEXTTOWADER函数有什么区别?阅读人页面:

C+中的nextafter vs nextoward函数+;2011? < C++ > 2011标准库的NEXTAFFTER与NEXTTOWADER函数有什么区别?阅读人页面:,c++,floating-point,c++11,c++-standard-library,C++,Floating Point,C++11,C++ Standard Library,nexttoward()函数与nextafter()函数的作用相同,只是它们有一个长的双秒参数 由于函数源于C,因此不能重载,这意味着函数的两个不同名称相同,但参数(-type)不同。以下是原始签名: float nextafter(float, float); float nexttoward(float, long double); 现在的标准只是说应该在C++中做得更好( 26.8 [C.MaLT] P11): 此外,应具有足够的额外过载,以确保: 如果与double参数对应的任何参数的

nexttoward()函数与nextafter()函数的作用相同,只是它们有一个长的双秒参数


由于函数源于C,因此不能重载,这意味着函数的两个不同名称相同,但参数(-type)不同。以下是原始签名:

float nextafter(float, float);
float nexttoward(float, long double);

现在的标准只是说应该在C++中做得更好(<代码> 26.8 [C.MaLT] P11<代码>):

此外,应具有足够的额外过载,以确保:

  • 如果与
    double
    参数对应的任何参数的类型为
    long double,
    则与
    double
    参数对应的所有参数都有效地转换为
    long double
  • 否则,如果与
    double
    参数对应的任何参数具有类型
    double
    或整数类型,则与
    double
    参数对应的所有参数都有效地转换为
    double
  • 否则,与
    double
    参数对应的所有参数将有效地转换为
    float
  • 另见:ISO C 7.5、7.10.2、7.10.6


    我想你忘了引用第二个论点是如何使用的。如果不讨论其含义,这是没有多大帮助的。是否存在行为可能不同的角落案例?在内部转换为长双精度是否存在性能开销?