我需要转换一个Fortran代码转换为C++之一,我有以下问题:错精度双重价值
我试图计算命名R12
两者的Fortran 77和C++语言,但我的双精度值获得了彼此非常接近的两个值,但具有两个不同的精度。这里是我的Fortran代码:
R12 = sqrt(95699.68D0+1123.6D0*flx) - 408.99D0
与double flx = 192.9D0
。我得到的值是R12 = 149.97522253177789
我做C++一样:
R12 = sqrt(95699.68+1123.6*flx) - 408.99 ;
我得到这里的价值R12 = 149.97522253177794
。
你们可以帮我找到该差分距离,因为它是非常重要的,我的工作有确切的精度
定义 “精确精密”?使用浮点值你永远不会有“精确的精度”,而对于非理性数字,无论如何你都需要无限精度。 'double'具有15-17的精确度,这就是你在这里所得到的。 –
你也可以在这里阅读更多关于这个:http://en.wikipedia.org/wiki/Machine_epsilon – CppChris
你是否检查过(1)乘法的结果在两种语言中都是相同的? (2)这两种语言的添加结果是相同的? (3)'sqrt'的结果在两种语言中都是相同的?您需要在SO之前询问问题的实质。 –