在 C 中显示从 0.000000001 到 0.999999999 的数字



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

#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++;
}

上面当然会打印尾随零。 目前尚不清楚您是否愿意这样做。

最新更新