1535 re(12):logscale での 固定/浮動小数点の表示の切替え |
先の投稿で、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) |
※ 『クリックポイント』とは一覧上から読み始めた地点を指し、ツリー上の記事を巡回しても、その位置に戻ることができます.