使用Math.Atan2后出现异常,感觉是此函数的内存错误

冰风漫天 2010-09-22 10:50:00
由于代码有500多行,这里只能贴10000字符,贴不下,所以把代码放在csdn博客里,请参考
http://blog.csdn.net/zhangenter/archive/2010/09/22/5900658.aspx

发现过程:如上代码在Debug和Release下执行程序时,出来的结果不一样(Bebug下找到6个,Release下找到4个),由于代码中并没有使用不安全代码,所以怀疑是Math.Atan2的问题,于是在代码483行加入代码 File.AppendAllText("Azimuth.txt", azimuth.ToString() + Environment.NewLine);想打印出Release时计算出来的角度,但是一加这行代码后,结果却莫名其妙的正确了。后来由于考虑到实现中实际只需要按方向做角度排序,并不需要算出较精确的角度,所以在代码208行用了一个其他的方法绕过了Math.Atan2的使用,至此代码不管在Debug下还是在Release下都能正常出结果了。

因为以前只有在c++中出现过这种问题,是因为指针使用不当,出现的内存问题,所以这边只能怀疑是Math.Atan2的方法有较隐蔽的内存错误,而Math.Atan2这个方法微软也确实是调用了它的底层库,不知其具体实现。也请各位大侠指点

ps:
1.这条大虾请无视,Debug下F5还是Ctrl+F5没关系,但Release必须Ctrl+F5或者运行编译后的exe才算执行程序,才能看到差异
2.我同事的机器和我自己家里的机器都会出这问题,但我自己公司的机器确没有这问题,所以我这不能保证这个问题一定能在你的机器上出现,所以不管你的机器上是否出现,如果试过了,请帮忙做个证明
...全文
256 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰风漫天 2010-09-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bloodish 的回复:]
确实有这个问题,Relase下,ctrl+f5,显示4个,但其他情况都是6.
不太明白为什么,计算精度问题?
帮你顶了
[/Quote]
非常感谢
我代码中也没有用到不安全的代码,所以基本认定是Math.Atan2函数内部实现有内存错误,诚然程序员写的代码有错误时正常的,不过像这样底层的函数它都能有错误的话,感觉还是不太能接受。
不知道其他人有没有碰到过类似的问题
bloodish 2010-09-22
  • 打赏
  • 举报
回复
确实有这个问题,Relase下,ctrl+f5,显示4个,但其他情况都是6.
不太明白为什么,计算精度问题?
帮你顶了

111,086

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧