C++ 2011 标准库的 nextafter 和 nexttoward 函数有什么区别?
问问题
2021 次
2 回答
15
由于函数源自 C,它们不能被重载,这意味着函数有两个不同的名称,它们执行相同但具有不同的参数(-type)。以下是原始签名:
float nextafter(float, float);
float nexttoward(float, long double);
现在标准只是说应该有一些重载以使 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。
于 2012-08-21T22:18:56.017 回答
1
阅读手册页:
nexttoward() 函数的作用与 nextafter() 函数相同,只是它们有一个长双精度参数。
于 2012-08-21T22:15:25.443 回答