我正在尝试编写一个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
答案 0 :(得分:1)
您没有看到使用
的问题printf("%f\n", test);
因为printf
用于浮点数的默认精度为6
。如果您将精度提高到10
,您会看到该数字不是1.0
。
printf("%.10f\n", test);
为我打印0.9999999404
。