-1

出力の列を整列させようとしているのですが、 %g を使用して印刷したいのですが、コンマで区切る必要がありますが、列を整列させるのに苦労しています。

現在、すべての double を次のように出力しています。

fprintf(output, "|%-9.6g, |%-15.6g, |%-30.6g\n",x,data[2*Ndprime-value1+i],data[2*Ndprime-value1+i+1]); 

私の出力は次のようになります。

|-0.0859029, |506.929        , |-505.954                      
|-0.079767, |507.13         , |-506.212                      
|-0.0736311, |507.312        , |-506.451                      
|-0.0674952, |507.474        , |-506.671                      
|-0.0613592, |507.618        , |-506.872                      
|-0.0552233, |507.742        , |-507.053                      
|-0.0490874, |507.847        , |-507.216                      
|-0.0429515, |507.933        , |-507.359                      
|-0.0368155, |508            , |-507.484                      
|-0.0306796, |507.798        , |-507.839                      
|-0.0245437, |508.077        , |-508.675                      
|-0.0184078, |509.086        , |-509.242                      
|-0.0122718, |510.077        , |-508.79                       
|-0.00613592, |510.798        , |-507.569 

| を並べる方法はありますか? 左の数字とコンマの間にスペースを入れないようにするには?

私はそれが非常に些細な質問であることを知っていますが、それについて何も見つけられないようです。前もって感謝します!

4

2 に答える 2

0

数字の直後にコンマを表示しながら、行を左揃えに保つことができた方法は次のとおりです。

 sprintf(str1, "%.6g,", othernumbers[i]);
 sprintf(str2, "%.6g,", numbers[i]);

 printf("|%-10s |%-16s |%-30.6g\n",str2,str1,-othernumbers[i]);

ただし、「|」の問題を解決するには 整列しない場合は、%gを使用せず、代わりに%fを使用することを検討する必要があります。

http://www.cplusplus.com/reference/cstdio/printf/から'.number'を破棄します

  • a、A、e、E、f、およびF指定子の場合:これは、小数点以下に出力される桁数です。
  • gおよびG指定子の場合:これは、印刷される有効桁数の最大数です。

したがって、数値-0.00613592の場合、小数点以下2つのゼロがあるため、表示には常に最小幅11が必要です。%fを使用すると、-0.006135に削減されます。%gを使用すると、フィールド幅を超える可能性が常にあります。

于 2012-12-06T19:11:48.970 に答える