Отличаются ли двойники C от двойников .NET?

Сравнивая некоторый C-код и F#, которым я пытаюсь его заменить, я заметил некоторые различия в конечном результате.

Проанализировав код, я обнаружил, что даже в нем есть отличия, пусть и крошечные.

Код начинается со чтения данных из файла. и самое первое число выходит по-разному. Например, в F# (проще написать):

let a = 71.9497985840
printfn "%.20f" a

Я получаю ожидаемый (для меня) результат 71.94979858400000000000.

Но в C:

a =  71.9497985840;
fprintf (stderr, "%.20f\n", a);

выводит 71.94979858400000700000.

Откуда эта цифра 7?

Разница невелика, но меня это беспокоит, потому что я не знаю, почему. (Это также беспокоит меня, потому что это затрудняет отслеживание того, где мои две версии кода расходятся)

10
задан Benjol 5 June 2012 в 12:09
поделиться