Printf:Java和C实现的差异

我今天注意到我不能使用*将宽度或精度参数传递给Java的printf实现。

也就是说, printf的以下参数在C中有效,但不是Java:

 "%*d", 10, 3 "%-*d", 10, 3 "%0*d", 10, 3 "%*.5f", 11, 1.0/9 "%-11.*f", 5, 1.0/9 "%0*.*f", 11, 5, 1.0/9 

我应该注意哪些其他实现差异?

我不认为它是差异。 我只是仔细阅读Java文档并完全从中完成。 从差异角度思考可能会导致事情在网络中滑落。

换句话说,我将相似性视为巧合,并假设两者是不同的,直到certificate不然:)

最近有一个不同之处:当用%g打印浮点数时(自动选择%e或%f),精度标志是不同的:

 Java: precision = "number of fractional digits after the decimal point" (%f, %e) "total number of digits in the resulting magnitude after rounding" (%g %G) C: precision = "number of fractional digits after the decimal point" (%f %e ) "maximum number of significant digits" (%g %G)