开发者社区> 问答> 正文

C/C++ math.h中的函数传相同参数进去返回的值一定相同吗?

我写的是C++

我希望对一些向量按其方向排序。我用下面的struct存向量

struct V { double x, y };
写下面的比较函数

inline bool operator<(const V &a, const V &b)
{
    return atan2(a.y,a.x)<atan2(b.y,b.x);
}
我把它传进std::sort里,然后排序过程中越界了。具体数据较大,不便分析。

然后我把V改成下面这样,并写一个构造函数

全选复制放进笔记struct V
{
    double x, y, t;
    V(double _x, double _y) : x(_x), y(_y), t(atan2(y,x)) {}
};
比较函数改成

inline bool operator<(const V &a, const V &b)
{
    return a.t<b.t;
}

这样就没问题了。

我原来认为atan2就算计算有误差,传相同的参数进去也应该返回相同的值。上面的情况意味着不是这样吗?还是有别的什么问题?

展开
收起
a123456678 2016-06-07 18:30:53 2046 0
1 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载