2011年8月23日

[ruby-list:48330] 1.25を %10.1f で出力したときバージョンにより表示に違いがでるのは何故でしょうか。

1.25を %10.1f で出力したとき、表示に違いがでるのですが、何故でしょうか。

Rubyを含むいくつかの言語で試しました。すべてWindows版です。

Rubyの場合、1.8.6と1.8.7で違いが出ます。意図して変更したものでしょうか。
JRubyとIronRubyは1.8.6のときと同じ結果です。

ほぼ同じバージョンでmingwとcygwinで違ってくるのは下にあるCライブラリの影響かとも

思いましたが、C/C++の結果を見る限りそうでもなさそうです。
いわゆるJIS丸めの問題かとも思ったのですが、違う気もします。

簡単なので書くまでもないのですが、Ruby版だけソースをメモします。
a = 1.25
print a,"\n"
printf "%10.1f\n", a


素 1.25

Excel 1.3

Ruby ruby1.8.6 1.3 mswin32
ruby1.8.7 1.2 mingw
ruby1.8.7 1.2 mswin32
ruby1.9.2 1.2 mingw
ruby1.9.2 1.2 mswin32
1.8.7 cygwin 1.3
1.8.7 mingw 1.2

JRuby161 1.3
IronRuby1.0 1.3

Perl JPerl 5.004 1.3
perl 5.8.8 1.3
perl 5.10.1 1.2 cygwin

C/C++ g++-4 (cygwin) 1.2
vc4 1.3
vc6 1.3
vs2008 1.3

C# csc 3.5 1.3

Fortran pws 1.3
compaq 1.2
ifort 1.2
gfortran(cygwin) 1.3 gcc4.4.0
g95 (mingw) 1.2 gcc4.4.4


投稿者 xml-rpc : 2011年8月23日 14:53
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/105914
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。