我正在尝试使用以下代码循环打印出标题中提到的数字:
#include <stdio.h>
int ceiling = 1;
float counter = 0;
int main()
{
while (counter < ceiling)
{
printf("%f\n", counter);
counter = counter + 0.000000001;
}
}
但它只给了我 7 位数的精度。有没有办法获得10位数的精度?
我正在尝试使用以下代码循环打印出标题中提到的数字:
#include <stdio.h>
int ceiling = 1;
float counter = 0;
int main()
{
while (counter < ceiling)
{
printf("%f\n", counter);
counter = counter + 0.000000001;
}
}
但它只给了我 7 位数的精度。有没有办法获得10位数的精度?
你不会从float
. 即使double
您在计数过程中可能会出现舍入错误,可能会出现跳过或重复某些数字。在紧要关头,您可以使用double
9 位小数,如下所示:
printf( "%.9f\n", counter );
但考虑使用 anint
代替。这将处理您需要的所有 9 位数字。你只需用零填充打印它们:
int counter = 0;
int ceiling = 1000000000;
while( counter < ceiling ) {
printf( "0.%09d\n", counter );
counter++;
}
上面当然会打印尾随零。目前尚不清楚你是否想要那样。