У меня довольно необычная проблема, это, вероятно, просто плохой код от новичка C-learn. Я борюсь со следующим фрагментом кода.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv) {
float a = 1587128832.000000;
int d = 1587128898.000000;
float f = a + d ;
printf("%f\n", f);
return 0;
}
Следующий код выводит 3174257664.000000
, в то время как Google говорит, что результат должен быть 3174257730 .
Я пытаюсь добавить float
/double
к int
, и это дает мне странный результат.
Так что, черт возьми, я делаю неправильно?
Я не думаю, что ошибка на самом деле связана со смешанными типами данных, поскольку C должен преобразовывать int
s в float
s.
float
в вашей системе 32-битное, то оно имеет только 6 или максимум 7 значащих десятичных цифр. Ваши инициализаторы имеют гораздо больше, чем 6 или 7 значащих цифр. - person phonetagger   schedule 18.05.2020double
, это не должно быть проблемой. - person anastaciu   schedule 18.05.2020