Avatar ·

C++ 中的标准 sign (signum, sgn) 函数:是否存在以及如何实现?

大家好!我正在编写一个用于数值分析的小型 C++ 程序,需要一个返回数字符号的函数:负数返回 -1,零返回 0,正数返回 1。在数学中,这称为 signum 或 sgn。 我翻遍了 和 的文档,但没有找到类似的东西。Python 有 numpy.sign(),MATLAB 有 sign(),而 C++ 中却一片寂静。难道标准 C++ 库中真的没有这么基础的东西吗? 以下是我想要做的示例: ```cpp #include #include // 也许在这里? int main() { double x = -5.7; // 希望可以这样写: // int s = sign(x); // 但编译器报错,说 sign 未声明。 // 不得不写一些笨拙的代码: int s; if (x > 0) s = 1; else if (x < 0) s = -1; else s = 0; std::cout << "sign(" << x << ") = " << s << std::endl; return 0; } ``` 这样虽然能工作,但看起来很糟糕。对于整数,我可以用一个小技巧