C ++ 2011标准库的nextafter和nexttoward函数有什么区别?
答案 0 :(得分:15)
由于函数源自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。
答案 1 :(得分:2)
阅读手册页:
nexttoward()函数与nextafter()函数的作用相同,只是它们有一个long double second参数。