我试图MB,GB和TB的浮点值转换为字节,但我具有由大的值的空间中的碱量(比如说,500 GB)乘以问题对其进行转换。
我相信这是一个数据类型的错误,但我似乎无法弄明白。我试图寻找在推广次序,但下面的这个逻辑似乎并没有工作。当我的程序尝试乘以500 * 10000000000时,我得到1000000000499999997952.000000(或类似的值,具体取决于变量类型)。
long factor = 10000000000;
float capacity = 500;
double result = capacity * factor;
fprint("%lf", result);
它应该输出5000000000000,但是我却得到1000000000499999997952.000000。我不认为变量类型是正确的,但没有我尝试似乎以帮助这个问题。
答案 0 :(得分:2)
#include <stdio.h>
int main()
{
unsigned long long factor = 10000000000;
float capacity = 500.0f;
double result = capacity * factor;
double result1 = (double)capacity * factor;
printf("result = %f\n result1 = %f\n", result, result1);
return 0;
}
和结果
result = 4999999913984.000000
result1 = 5000000000000.000000