C++ 过零符号函数

C++ 过零符号函数,c++,function,math,sign,C++,Function,Math,Sign,我已经写了一个符号函数,我想知道它是否正确(问一个愚蠢的问题,我知道!)我只是想知道这是否是解决这个特定任务的最佳方法: template<typename T> T sign(T n) { if(n < 0) return -1; if(n > 0) return 1; return 0; } 模板 T符号(T n) { 如果(n0)返回1; 返回0; } 这能为大型数据集提供足够准确的结果吗?有人能看到我在现实生活中遇到的问题吗 谢谢我将更改返回0到返

我已经写了一个符号函数,我想知道它是否正确(问一个愚蠢的问题,我知道!)我只是想知道这是否是解决这个特定任务的最佳方法:

template<typename T>
T sign(T n)
{
  if(n < 0) return -1;
  if(n > 0) return 1;
  return 0;
}
模板
T符号(T n)
{
如果(n<0)返回-1;
如果(n>0)返回1;
返回0;
}
这能为大型数据集提供足够准确的结果吗?有人能看到我在现实生活中遇到的问题吗


谢谢

我将更改
返回0
返回n。如果
n
NaN
sign
应该返回
NaN
,而不是
0
int
返回类型不是更好吗?目前,您认为
-1
1
可以转换为
T
类型。您所说的“足够准确的结果”是什么意思?它给出了精确的结果(除非您使用的是一个真正奇怪的类型,它不能精确地(但近似地)表示0、1和-1)。你想让它们更准确吗?@john嘿,谢谢!因此,不使用模板来决定返回类型,只返回一个int?在我看来很好。我更喜欢你的版本,而不是建议的副本-易于理解,不应该明显较慢。