タグ

ブックマーク / qiita.com/zakuroishikuro (1)

  • Rubyで数値の各桁を計算で取得することは無駄な努力だった (と思ったらそうでもなかった) - Qiita

    まとめ (2015/04/28追記) 桁数はMath.log10を使って求める方法がダントツで速い 各桁を配列で取得するには「一旦to_sで文字列にする」「1桁ずつ計算で求める」の2種類の方法がある 桁数が膨大な場合はto_sしたほうが速いが、十分に小さい場合は計算で求めたほうが速い 計算方法にもよるので計算のほうが早くなる方法もあるかもしれない まぁそこまで速度に差はつかないのでどっちでもいいと思う class Integer # 桁数 def length #sizeはバイト数だけどlengthは使われてなかったので # 0を渡すとエラーが出るので避ける self.zero? ? 1 : Math.log10(self.abs).to_i + 1 end # 各桁 def to_a if Bignum === self # Bignumなら文字列にする方法で取得 self.abs.to

    Rubyで数値の各桁を計算で取得することは無駄な努力だった (と思ったらそうでもなかった) - Qiita
    n2s
    n2s 2015/05/04
  • 1