首页 > 解决方案 > 是否有可能使用 printf 使点“浮动”取决于值?

问题描述

我希望转换后的字符串始终采用 N 个字符,有点像这样:

100000.f -> "00100000.0"
10000.f  -> "00010000.0"
1000.f   -> "00001000.0"
100.f    -> "00000100.0"
10.f     -> "00000010.0"
1.f      -> "00000001.0"
0.1f     -> "00000000.1"
0.01f    -> "0000000.01"
0.001f   -> "000000.001"
0.0001f  -> "00000.0001"

或像这样:

100000.f -> "100000.000"
10000.f  -> "10000.0000"
1000.f   -> "1000.00000"
100.f    -> "100.000000"
10.f     -> "10.0000000"
1.f      -> "1.00000000"
0.1f     -> "0.10000000"
0.01f    -> "0.01000000"
0.001f   -> "0.00100000"
0.0001f  -> "0.00010000"

当然,如果小数部分太大,字符串可能会变大,但到目前为止我并不担心。

我应该动态生成“%05.5f”格式字符串吗?

标签: cprintfnumber-formatting

解决方案


不,您不必动态生成字符串。你可以这样做:

printf("%0*.5f", width, value);

您可以进一步自定义它,以获得可变精度:

printf("%0*.*f", width, precision, value);

推荐阅读