1

我正在编写一个 C++ 程序,并试图修复一个错误,我已将我的主程序的一部分隔离到一个单独的文件中。我将调用主程序Prog1和分离的部分Prog2

我已经成功地找到并修复了 Prog2 中的错误,并将更改复制到 Prog1。当我运行所有程序时,两个程序输出相同的结果IFF我在两个程序中使用的唯一数据类型是 type double

我希望将所有双打更改long double为提高精度,但这样做时,Prog1 的输出与 Prog2 略有不同。

我的想法是这是一个提升问题,因为 Prog1 中的某些计算使用长双精度数,而在 Prog2 中我偶尔只使用文字。例如:

程序1:

long double num = 1.0;

value1 = num + 2.0;

程序2:

value2 = 1.0 + 2.0;

value1和的结果value2将不完全相等(请参阅:浮点数学是否损坏?)。

现在我可以将两个程序中的每个文字都更改为类型long double(例如1.0L),然后查看输出是否匹配,但不幸的是,说起来容易做起来难(有很多)。

所以我的问题是:

由于我的两个程序的输出在使用双打时完全匹配,如果 Prog2 是,那么假设 Prog1 正常运行是否安全?即使使用长双打时结果不同?

4

0 回答 0