比较一些 C 代码和我试图替换它的 F#,我观察到最终结果存在一些差异。
备份代码,我发现即使存在差异 - 尽管很小。
代码首先从文件中读取数据。第一个数字的结果不同。例如,在 F# 中(更易于编写脚本):
let a = 71.9497985840
printfn "%.20f" a
我得到了预期的(对我而言)输出71.94979858400000000000
。
但在 C 中:
a = 71.9497985840;
fprintf (stderr, "%.20f\n", a);
打印出来71.94979858400000700000
。
那个 7 是从哪里来的?
差异很小,但它困扰着我,因为我不知道为什么。(这也让我很困扰,因为它让我更难追踪我的两个版本的代码在哪里分歧)