[#45906] ' failures. — Tanaka Akira <akr@...>
' の扱いが変化したことで、テストが失敗しているようです。
9 messages
2012/07/04
[#45910] [ruby-trunk - Bug #6694][Open] Thread.new without block. — "ko1 (Koichi Sasada)" <redmine@...>
24 messages
2012/07/04
[#45928] Re: [ruby-cvs:43524] kosaki:r36348 (trunk): * include/ruby/ruby.h: Removed RUBY_GLOBAL_SETUP complely. It is — SASADA Koichi <ko1@...>
ささだです.
3 messages
2012/07/09
[#45973] [ruby-trunk - Bug #6751][Assigned] remove tempfiles early. — "akr (Akira Tanaka)" <akr@...>
4 messages
2012/07/18
[#45976] [ruby-trunk - Bug #6756][Open] FileUtils.rm_rf がアクセス権のない空ディレクトリを削除しない — "fumiyas (Fumiyasu SATOH)" <fumiyas@...>
9 messages
2012/07/20
[#45977] [ruby-trunk - Feature #6757][Open] [PATCH] Add Process.getsid — "fumiyas (Fumiyasu SATOH)" <fumiyas@...>
6 messages
2012/07/20
[#46012] [ruby-trunk - Feature #6812][Open] Refactor gc.c — "authorNari (Narihiro Nakamura)" <authorNari@...>
13 messages
2012/07/30
[ruby-dev:45960] [ruby-trunk - Bug #6741][Open] (1 << 103).to_f.to_s is "10141204801825835000000000000000.0"
From:
"akr (Akira Tanaka)" <akr@...>
Date:
2012-07-16 12:07:18 UTC
List:
ruby-dev #45960
Issue #6741 has been reported by akr (Akira Tanaka).
----------------------------------------
Bug #6741: (1 << 103).to_f.to_s is "10141204801825835000000000000000.0"
https://bugs.ruby-lang.org/issues/6741
Author: akr (Akira Tanaka)
Status: Open
Priority: Normal
Assignee:
Category:
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-07-15 trunk 36395) [x86_64-linux]
気がついたのですが、Float#to_s が実際には 0 でない桁を 0 とした文字列を生成することがあります。
% ./ruby -ve '1.upto(200) {|i| p [i, (1 << i).to_f.to_s] }'
ruby 2.0.0dev (2012-07-15 trunk 36395) [x86_64-linux]
[1, "2.0"]
[2, "4.0"]
[3, "8.0"]
[4, "16.0"]
[5, "32.0"]
[6, "64.0"]
[7, "128.0"]
[8, "256.0"]
...
[54, "18014398509481984.0"]
[55, "36028797018963970.0"]
[56, "72057594037927940.0"]
[57, "144115188075855870.0"]
[58, "288230376151711740.0"]
[59, "576460752303423500.0"]
[60, "1152921504606847000.0"]
[61, "2305843009213694000.0"]
[62, "4611686018427388000.0"]
[63, "9223372036854776000.0"]
[64, "18446744073709552000.0"]
[65, "36893488147419103000.0"]
[66, "73786976294838210000.0"]
[67, "147573952589676410000.0"]
[68, "295147905179352830000.0"]
[69, "590295810358705700000.0"]
[70, "1180591620717411300000.0"]
[71, "2361183241434822600000.0"]
[72, "4722366482869645000000.0"]
[73, "9444732965739290000000.0"]
[74, "18889465931478580000000.0"]
[75, "37778931862957160000000.0"]
[76, "75557863725914320000000.0"]
[77, "151115727451828650000000.0"]
[78, "302231454903657300000000.0"]
[79, "604462909807314600000000.0"]
[80, "1208925819614629200000000.0"]
[81, "2417851639229258300000000.0"]
[82, "4835703278458517000000000.0"]
[83, "9671406556917033000000000.0"]
[84, "19342813113834067000000000.0"]
[85, "38685626227668134000000000.0"]
[86, "77371252455336270000000000.0"]
[87, "154742504910672530000000000.0"]
[88, "309485009821345100000000000.0"]
[89, "618970019642690200000000000.0"]
[90, "1237940039285380300000000000.0"]
[91, "2475880078570760500000000000.0"]
[92, "4951760157141521000000000000.0"]
[93, "9903520314283042000000000000.0"]
[94, "19807040628566084000000000000.0"]
[95, "39614081257132170000000000000.0"]
[96, "79228162514264340000000000000.0"]
[97, "158456325028528680000000000000.0"]
[98, "316912650057057350000000000000.0"]
[99, "633825300114114700000000000000.0"]
[100, "1267650600228229400000000000000.0"]
[101, "2535301200456459000000000000000.0"]
[102, "5070602400912918000000000000000.0"]
[103, "10141204801825835000000000000000.0"]
[104, "2.028240960365167e+31"]
...
[200, "1.6069380442589903e+60"]
この例では、(1 << 55).to_f から (1 << 103).to_f で、整数部分の
下のほうの桁が 0 になっています。
(1 << n) の整数部最下位桁は 0 にはならないので、これはまちがっています。
おそらく、そういう間違った桁を表示するようになってしまう状況では
指数形式を使って、そのあたりの桁は表示しないようにするべきなのだと思います。
また、実際、1.8.7 ではそのように動作します。
% ruby-1.8.7p370 -ve '1.upto(200) {|i| p [i, (1 << i).to_f.to_s] }'
ruby 1.8.7 (2012-06-29 patchlevel 370) [x86_64-linux]
[1, "2.0"]
[2, "4.0"]
...
[46, "70368744177664.0"]
[47, "1.40737488355328e+14"]
...
--
http://bugs.ruby-lang.org/