月を0パディングして、常に2桁で扱いたいと考えて、次の様に書いたのですが、何故か08と09だけ失敗しました。
ruby
1#!/usr/local/bin/ruby 2 3p "%02d" % '01'.to_s 4p "%02d" % '02'.to_s 5p "%02d" % '03'.to_s 6p "%02d" % '04'.to_s 7p "%02d" % '05'.to_s 8p "%02d" % '06'.to_s 9p "%02d" % '07'.to_s 10p "%02d" % '08'.to_s 11p "%02d" % '09'.to_s 12p "%02d" % '10'.to_s 13p "%02d" % '11'.to_s 14p "%02d" % '12'.to_s
(このコードは意味のない変換を行っていますが、調査途中でこの現象に気づいたので質問しています。)
実行結果
ruby
1"01" 2"02" 3"03" 4"04" 5"05" 6"06" 7"07" 8./w:10:in `%': invalid value for Integer(): "08" (ArgumentError) 9 from ./w:10:in `<main>'
何故このような結果になるのでしょうか?
2つの環境で試したのですが、どちらも同じ結果でした。
OS X El Capitan ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]
Centos 6 ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
他に必要な情報があれば、指摘してください。
よろしくお願いします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/30 00:33