c - 将 0 视为 printf %g 格式说明符中的有效数字

标签 c format alignment printf specifier

我正在尝试使用 printf 以仅打印前 n 个字符的方式打印 float 1.2345678、0.1234567、123.45678。我想让这些数字排成一行。 printf("%*g", n, var) 中的 %g 格式说明符执行此操作,但说明符并未将 0.1234567 中的 0 视为有效数字。这会导致 0.1234567 与其他两个数字的对齐出现偏差。

以给定格式对齐数字的最佳方式是什么。是通过 %g 将 0 视为重要的还是使用其他方法?

最佳答案

By definition前导零不是有效数字。如果要打印前 N 位数字,包括前导零,请先将数字转换为字符串并使用 printf("%.*s", n, var_as_string)

这样,前 n 个字符确实会打印出来,正如您所要求的那样。当然,小数点 . 与任何其他字符一样,现在很重要,这与 %g 不同。

关于c - 将 0 视为 printf %g 格式说明符中的有效数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41400735/

相关文章:

html - margin : 0 auto; not centering because there are divs to the left and right

c - fgets 如何对待\n?

c - 跳到通缉线并在 c 中覆盖其中的第一个字母

c++ - 用于进行通配符字符串匹配的 Win32 API

html - CSS 表格不会改变高度

user-interface - 如何在 Flutter 中垂直和水平居中文本?

c++ - 用 C++ 编写的 Matlab gamfit 和 gampdf 函数

mysql - 显示表 "episodes"中的季节数无法格式化查询

java - 如何将数字格式化为相同数量的数字,用 0 填充?

datetime - ExtJs4,如何在gridpanel中手动编辑具有文本格式(没有时间字段或日期字段)的单元格日期时间?