LoginSignup
1
0

More than 5 years have passed since last update.

Rubyの%記号に関する小ネタ

Last updated at Posted at 2019-03-03

Ruby: パーセント記号 % の使い方まとめ
を読んだところ思い出したの備忘録代わりに


剰余算の%は負値の時意外?な事になる

わりと有名ですが、Rubyの剰余算は負の値を考慮するとちょっと不思議な事になります。

例えば、C/C++の場合
5 % 3 = 2
-5 % 3 = -2
ですが

Rubyの場合は
5 % 3 = 2
-5 % 3 = 1
となります。

くわしくは、絶対値最小剰余や最小非負剰余で検索するとよいでしょう。
一応Rubyの方が一貫性ある感じではあるが、たまにハマりますので注意が必要です。

ちなみに、ActiveSupport::Duration.buildがこの罠を踏んでいます。

%リテラルの区切り記号にNUL文字が使える

バグなのかそうでないのか微妙なのですが

STR = "%\0hoge!\0"

puts STR
puts eval(STR)
1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0