20

C++ 2011 标准库的 nextafter 和 nexttoward 函数有什么区别?

4

2 回答 2

15

由于函数源自 C,它们不能被重载,这意味着函数有两个不同的名称,它们执行相同但具有不同的参数(-type)。以下是原始签名:

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

现在标准只是说应该有一些重载以使 C++ ( §26.8 [c.math] p11) 中的事情变得更好:

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

  1. 如果与参数对应的任何double参数具有类型long double,,则与参数对应的所有double参数都有效地转换为long double.
  2. 否则,如果与形参对应的任何实double参具有类型double或整数类型,则与形参对应的所有实double参都被有效地强制转换为double.
  3. 否则,与参数对应的所有double参数都将有效地转换为float.

另见:ISO C 7.5、7.10.2、7.10.6。

于 2012-08-21T22:18:56.017 回答
1

阅读手册页:

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

于 2012-08-21T22:15:25.443 回答