C++中double和long double的区别

3

除了精度之外,有人可以向我解释一下double 和 long double之间的差异吗? 我编写了一个程序来解决重力n体问题,所以基本上要对2阶微分方程进行积分,而我的程序使用double工作得很好。 但是当我用long double替换所有我使用的double时,所有计算似乎都产生了荒谬的结果。 有人可以解释这个原因吗?

与大家似乎认为的相反,我在“long double vs double”线程中找不到我正在寻找的答案。


1
如果您提供一个 MCVE 来展示您如何得到“荒谬的结果”,那么您可能能够挽救这个问题。 - Fred Larson
6
我的评论中的“MCVE”是一个链接。点击它即可。 - Fred Larson
1
MinGW在历史上一直存在“long double”的问题。这个链接可能会有所帮助:https://dev59.com/r2855IYBdhLWcg3w5IrZ#14988103 - Zéychin
4
这里的问题在于你提出了错误的问题。你问的是doublelong double之间的区别,但这个问题已经被回答过了,并且答案并不能解决你的问题。你应该问的问题是:“我在使用long double时做错了什么”,然后展示能够说明你问题的代码。 - Fred Larson
1
如果x是一个浮点数,你不应该测试x == 0.而应该始终测试abs(x) < epsilon,其中epsilon由你需要的精度给出 - 但你也可以查看这个其他的SO帖子 - Serge Ballesta
显示剩余16条评论
1个回答

0

我在我的代码中使用了 long double 而不是 double。 - W. Verbeke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接