我今天注意到我无法使用*
将宽度或精度参数传递给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
我应该注意哪些其他实施差异?
答案 0 :(得分:12)
我不认为它是差异。我只是仔细阅读Java documentation并完全从那里开始。从差异角度思考可能会导致事情在网络上滑落。
换句话说,我将相似性视为巧合,并假设两者是不同的,除非另有证明:)
答案 1 :(得分:1)
最近出现了一个不同之处:当使用%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)