I am attempting to convert float values of MB, GB, and TB to bytes, but I am having issues multiplying a base amount of space (say, 500 GB) by a large value to convert them.
I believe it is a data type error, yet I can't seem to figure it out. I tried looking at the order of promotion, yet following that logic didn't seem to work. When my program tries to multiply 500 * 10000000000, I get 1000000000499999997952.000000 (or something similar depending on variable types).
long factor = 10000000000;
float capacity = 500;
double result = capacity * factor;
fprint("%lf", result);
It should output 5000000000000, but I get 1000000000499999997952.000000 instead. I don't think the variable types are right, but nothing I try seems to aid this issue.