乘浮有大量简单的一起追加数

时间:2019-01-31 18:20:19

标签: c variables type-promotion

我试图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。我不认为变量类型是正确的,但没有我尝试似乎以帮助这个问题。

1 个答案:

答案 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