Если у меня есть две программы, которые выдают одинаковое значение с помощью двойных чисел, могу ли я считать, что обе программы идентичны?

Я пишу программу на C ++ и, пытаясь исправить ошибку, выделил раздел моей основной программы в отдельный файл. Я позвоню в основную программу Prog1 и разделенный раздел Prog2.

Мне удалось успешно найти и исправить ошибку в Prog2, и я скопировал изменения в Prog1. Когда я запускаю все, две программы выдают один и тот же результат IFF единственный тип данных, который я использую в обеих программах, это тип double,

Я надеялся изменить все пары long double для повышения точности, но при этом вывод Prog1 немного отличается от Prog2.

Я думаю, что это проблема продвижение потому что некоторые вычисления в Prog1 используют длинные двойники, тогда как в Prog2 я иногда просто использую литералы. Например:

Prog1:

long double num = 1.0;

value1 = num + 2.0;

Prog2:

value2 = 1.0 + 2.0;

Где результаты value1 а также value2 не будет точно равен (см .: Математика с плавающей точкой нарушена?).

Теперь я мог бы просто изменить каждый литерал в обеих программах, чтобы набрать long double (например. 1.0L) затем посмотрите, совпадают ли результаты, но, к сожалению, это легче сказать, чем сделать (есть много).

Итак, мой вопрос:

Поскольку вывод двух моих программ в точности совпадает при использовании double, можно ли предположить, что Prog1 работает правильно, если Prog2 работает? Даже если результаты отличаются при использовании длинных пар?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]