Сравнивая некоторый C-код и F#, которым я пытаюсь его заменить, я заметил некоторые различия в конечном результате.
Проанализировав код, я обнаружил, что даже в нем есть отличия, пусть и крошечные.
Код начинается со чтения данных из файла. и самое первое число выходит по-разному. Например, в F# (проще написать):
let a = 71.9497985840
printfn "%.20f" a
Я получаю ожидаемый (для меня) результат 71.94979858400000000000
.
Но в C:
a = 71.9497985840;
fprintf (stderr, "%.20f\n", a);
выводит 71.94979858400000700000
.
Откуда эта цифра 7?
Разница невелика, но меня это беспокоит, потому что я не знаю, почему. (Это также беспокоит меня, потому что это затрудняет отслеживание того, где мои две версии кода расходятся)