Я недавно начал использовать C, и у меня возникли некоторые проблемы с простой арифметической операцией, состоящей в умножении двух чисел.
Изначально я пытался напечатать результат 8 * 2 в файл. В настоящее время это выводит 16. Затем я умножил то, что я действительно хотел, 8 * 0,000000123456789. Вот мой код:
fprintf( fp2, "%d\n", (long double)(8*0.000000123456789));
Результат, выведенный в файл: -1086490624 . Тогда как на самом деле это должно было быть: 0.000000987654312 . Я намеренно набрал арифметику как длинный дубль, чтобы избежать переполнения. Ничего не делать и использовать:
fprintf( fp2, "%d\n", (8*0.000000123456789));
Доходность 1719134127 , опять-таки не имеющая никакого отношения к фактическому значению 0,000000987654312
Есть предложения, пожалуйста?