1

我正在尝试使用以下代码循环打印出标题中提到的数字:

#include <stdio.h>
int ceiling = 1;
float counter = 0;
int main()
{
while (counter < ceiling)
{
    printf("%f\n", counter);
    counter = counter + 0.000000001;
}
}

但它只给了我 7 位数的精度。有没有办法获得10位数的精度?

4

1 回答 1

4

你不会从float. 即使double您在计数过程中可能会出现舍入错误,可能会出现跳过或重复某些数字。在紧要关头,您可以使用double9 位小数,如下所示:

printf( "%.9f\n", counter );

但考虑使用 anint代替。这将处理您需要的所有 9 位数字。你只需用零填充打印它们:

int counter = 0;
int ceiling = 1000000000;
while( counter < ceiling ) {
    printf( "0.%09d\n", counter );
    counter++;
}

上面当然会打印尾随零。目前尚不清楚你是否想要那样。

于 2013-09-19T02:54:07.727 回答