前の画面〕 〔クリックポイント〕 〔最新の一覧〕 〔全て読んだことにする〕〔全て読んだことにして終了〕 〔終了

1535 re(12):logscale での 固定/浮動小数点の表示の切替え
2007/3/8(木)19:54 - OsN - inetgw1.sumitomometals.co.jp - 1549 hit(s)

引用する
現在のパスワード


先の投稿で、printf コマンドの挙動が異なることを示したのですが、

松田七美男> 状況説明が悪くて誤解を与えたようです.FreeBSDもLinux同じGNUのlibcを使っているので,
松田七美男> prinftの挙動が異なるとはとうてい考えられません. 

と書かれたので、printf コマンド と printf 関数 で挙動が違うということを
言われているのかと、以下のコードを実行してみました。
#include <stdio.h>

int main() {  
        printf("%0.16g \n" , 9.999999999999991e-05 );
        printf("%0.15g \n" , 9.999999999999991e-05 );
        printf("%0.14g \n" , 9.999999999999991e-05 );
        printf("%g \n" , 0.0001 );
        return 0;
}
と、
FreeBSD
9.999999999999991e-05 
9.99999999999999e-05 
0.0001 
0.0001 

Linux
9.999999999999991e-05 
9.99999999999999e-05 
1e-04 
0.0001 
と、やはり、
        printf("%0.14g \n" , 9.999999999999991e-05 );
の挙動が異なってます。 (Linux glibc-2.4-28, FreeBSD-6.2)

printf の厳密な仕様は、今、見つけられなかったのですが、man 3 printf では、g に関し
The double argument is converted in style f or e.
The precision specifies the number of significant digits.  
Style e is used 
  if the exponent from its conversion is
     less than -4 
       or
     greater than or equal to the precision.  
となっていて、指定精度による丸めを浮動小数点表示への変換の前にやるのか
後にやるのか(ここでは、表示のための丸めでしょうから前者が普通とは思いますが)
等、明示されていないように思います。

うーん、Net のどこかで printf の厳密な仕様見れないでしょうか。
ANSI の規格が見れればいいんでしょうが、今まで気にした事なかったので、どこに
行けば見れるものやら、、、


〔ツリー構成〕

【1513】 logscale での 固定/浮動小数点の表示の切替え 2007/3/7(水)08:51 OsN (560)
┣【1514】 re(1):logscale での 固定/浮動小数点の表示の切替え 2007/3/7(水)10:35 竹の (942)
┣【1515】 re(2):logscale での 固定/浮動小数点の表示の切替え 2007/3/7(水)10:47 竹の (83)
┣【1516】 re(3):logscale での 固定/浮動小数点の表示の切替え 2007/3/7(水)13:47 松田七美男 (446)
┣【1517】 re(4):logscale での 固定/浮動小数点の表示の切替え 2007/3/7(水)13:57 松田七美男 (220)
┣【1519】 re(5):logscale での 固定/浮動小数点の表示の切替え 2007/3/7(水)14:15 OsN (475)
┣【1518】 re(3):logscale での 固定/浮動小数点の表示の切替え 2007/3/7(水)14:05 OsN (2103)
┣【1520】 re(4):logscale での 固定/浮動小数点の表示の切替え 2007/3/7(水)19:09 竹の (740)
┣【1523】 re(5):logscale での 固定/浮動小数点の表示の切替え 2007/3/7(水)22:33 OsN (625)
┣【1529】 re(6):logscale での 固定/浮動小数点の表示の切替え 2007/3/8(木)10:38 竹の (490)
┣【1522】 re(4):logscale での 固定/浮動小数点の表示の切替え 2007/3/7(水)19:16 竹の (147)
┣【1524】 re(5):logscale での 固定/浮動小数点の表示の切替え 2007/3/8(木)01:50 松田七美男 (343)
┣【1525】 re(6):logscale での 固定/浮動小数点の表示の切替え 2007/3/8(木)07:28 OsN (677)
┣【1526】 re(7):logscale での 固定/浮動小数点の表示の切替え 2007/3/8(木)08:41 OsN (1178)
┣【1527】 re(8):logscale での 固定/浮動小数点の表示の切替え 2007/3/8(木)08:58 OsN (416)
┣【1528】 re(8):logscale での 固定/浮動小数点の表示の切替え 2007/3/8(木)10:14 竹の (1255)
┣【1531】 re(9):logscale での 固定/浮動小数点の表示の切替え 2007/3/8(木)11:33 松田七美男 (94)
┣【1532】 re(10):logscale での 固定/浮動小数点の表示の切替え 2007/3/8(木)12:23 竹の (372)
┣【1533】 re(11):logscale での 固定/浮動小数点の表示の切替え 2007/3/8(木)14:17 松田七美男 (399)
┣【1534】 re(12):logscale での 固定/浮動小数点の表示の切替え 2007/3/8(木)19:32 竹の (2501)
┣【1536】 re(13):logscale での 固定/浮動小数点の表示の切替え 2007/3/8(木)20:10 OsN (868)
┣【1537】 re(13):logscale での 固定/浮動小数点の表示の切替え 2007/3/8(木)20:51 松田七美男 (865)
┣【1539】 re(14):logscale での 固定/浮動小数点の表示の切替え 2007/3/8(木)21:44 竹の (3062)
┣【1538】 re(13):logscale での 固定/浮動小数点の表示の切替え 2007/3/8(木)21:32 松田七美男 (525)
┣【1535】 re(12):logscale での 固定/浮動小数点の表示の切替え 2007/3/8(木)19:54 OsN (1546)

前の画面〕 〔クリックポイント〕 〔最新の一覧〕 〔全て読んだことにする〕〔全て読んだことにして終了〕 〔終了

※ 『クリックポイント』とは一覧上から読み始めた地点を指し、ツリー上の記事を巡回しても、その位置に戻ることができます.