【发布时间】:2012-08-17 07:51:35
【问题描述】:
C++ 2011标准库的nextafter和nexttoward函数有什么区别?
【问题讨论】:
标签: c++ floating-point c++11 c++-standard-library
C++ 2011标准库的nextafter和nexttoward函数有什么区别?
【问题讨论】:
标签: c++ floating-point c++11 c++-standard-library
由于函数源自 C,它们不能被重载,这意味着函数有两个不同的名称,但具有不同的参数(-type)。以下是原始签名:
float nextafter(float, float);
float nexttoward(float, long double);
现在标准只是说应该有 a few overloads 以使 C++ 中的事情变得更好 (§26.8 [c.math] p11):
此外,应有足够的额外重载以确保:
- 如果与
double参数对应的任何参数的类型为long double,,则与double参数对应的所有参数都将有效地转换为long double。- 否则,如果与
double参数对应的任何参数的类型为double或整数类型,则与double参数对应的所有参数都将有效地转换为double。- 否则,与
double参数对应的所有参数都将有效地转换为float。另请参阅:ISO C 7.5、7.10.2、7.10.6。
【讨论】:
阅读手册页:
nexttoward() 函数的作用与 nextafter() 函数相同,只是它们有一个长的双秒参数。
【讨论】: