在 Perl 中打印 .00001 的解决方法

Dan*_*son 3 precision perl printf

我有这个程序:

\n
my $d = 40000 * 100 / 360;\nprint "At the equator\\n";\nprintf "%9s\xc2\xb0 = %10.3f meters\\n", 10**-$_, 10**-$_ * $d for 0 .. 7;\n
Run Code Online (Sandbox Code Playgroud)\n

它输出

\n
my $d = 40000 * 100 / 360;\nprint "At the equator\\n";\nprintf "%9s\xc2\xb0 = %10.3f meters\\n", 10**-$_, 10**-$_ * $d for 0 .. 7;\n
Run Code Online (Sandbox Code Playgroud)\n

如何修复我的程序,以便指数表示法不用于较小的数字?

\n

ike*_*ami 9

printf "%9.${_}f\xc2\xb0 = %9.3f meters\\n", 10**-$_, 10**-$_ * $d for 0 .. 7;\n
Run Code Online (Sandbox Code Playgroud)\n

或者

\n
printf "%9.*f\xc2\xb0 = %9.3f meters\\n", $_, 10**-$_, 10**-$_ * $d for 0 .. 7;\n
Run Code Online (Sandbox Code Playgroud)\n

输出:

\n
        1\xc2\xb0 = 11111.111 meters\n      0.1\xc2\xb0 =  1111.111 meters\n     0.01\xc2\xb0 =   111.111 meters\n    0.001\xc2\xb0 =    11.111 meters\n   0.0001\xc2\xb0 =     1.111 meters\n  0.00001\xc2\xb0 =     0.111 meters\n 0.000001\xc2\xb0 =     0.011 meters\n0.0000001\xc2\xb0 =     0.001 meters\n
Run Code Online (Sandbox Code Playgroud)\n