Я пытаюсь преобразовать значения с плавающей запятой в МБ, ГБ и ТБ в байты, но у меня возникают проблемы при умножении базового объема пространства (скажем, 500 ГБ) на большое значение для их преобразования.
Я считаю, что это ошибка типа данных, но я не могу понять это.Я попытался посмотреть на порядок продвижения, но следование этой логике, похоже, не сработало.Когда моя программа пытается умножить 500 * 10000000000, я получаю 1000000000499999997952.000000 (или что-то похожее в зависимости от типов переменных).
long factor = 10000000000;
float capacity = 500;
double result = capacity * factor;
fprint("%lf", result);
Она должна вывести 500000000000000, но вместо этого я получаю 1000000000499999997952.000000.Я не думаю, что типы переменных правильные, но, похоже, ничто из того, что я пробую, не поможет в этом.