[英]Rounding floating point program
我正在尝试编写一个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
您没有看到使用的问题
printf("%f\n", test);
因为printf
用于浮点数的默认精度是6
。 如果将精度提高到10
,则会看到该数字不是1.0
。
printf("%.10f\n", test);
为我打印0.9999999404
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.