Printf:Java和C实现的差异

时间:2012-03-22 14:41:12

标签: java c printf

我今天注意到我无法使用*将宽度或精度参数传递给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

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

2 个答案:

答案 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)