舍入浮点程序

时间:2015-09-29 19:30:44

标签: c floating-point

我正在尝试编写一个C程序来找到最小的正整数x,使得(1 / x)* x不等于1,使用单精度。我再次以双精度再做。我知道单精度的x是41,但是当我通过编写C代码测试它时,我仍然得到1.00000

这是我的测试代码

int main()
{
    float x = 41;
    float div = 1/x;
    float test = div * x;

    printf("%f\n", test);
}

我得到1.0000而不是0.999999

1 个答案:

答案 0 :(得分:1)

您没有看到使用

的问题
printf("%f\n", test);

因为printf用于浮点数的默认精度为6。如果您将精度提高到10,您会看到该数字不是1.0

printf("%.10f\n", test);

为我打印0.9999999404