我已经将一些代码从C++移植到了Visual C++ (这是我第一次在Visual C++环境中编码)。代码做了大量的数学运算,我可以看到原始代码和移植后的代码有不同的结果。
我几乎所有的变量都是双精度数据类型。
也许这是一个愚蠢的问题,但是Visual C++ double和C++ double之间有什么区别吗?范围有什么不同吗?我似乎找不到任何Visual C++文档来解释它的数据类型。
发布于 2014-02-04 20:38:28
Visual C++使用IEEE 754格式存储双倍数据。"C++ double“没有明确的定义,但如果你能发现它没有使用IEEE754,我会很惊讶,因为它是大多数CPU的原生编码。
所以不,没有区别!
发布于 2014-02-04 20:37:44
看看这个:http://www.altdevblogaday.com/2012/03/22/intermediate-floating-point-precision/
VS有一个/fp option (http://msdn.microsoft.com/en-us/library/e7s85ffb.aspx)来指定浮点精度(类似于CUDA的快速数学)。其中一些也可以防止内部;如果你有转换,可能会有很大的不同。
最后,这些设置的行为和缺省值依赖于编译器(http://social.msdn.microsoft.com/Forums/vstudio/en-US/ebab293c-0c85-462e-a352-22ff8ee55c36/sqrt-code-optimization-is-twice-faster-on-vs20082010-than-vs2012-sse?forum=vcgeneral)
发布于 2014-02-04 20:37:05
乍一看没有区别,但不同的编译器可能会对表达式进行不同的优化。
项目属性中的代码生成选项具有浮点模型设置。它可以是精确的、严格的或快速的。
https://stackoverflow.com/questions/21552719
复制相似问题