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