#author("2022-07-08T15:23:36+00:00","default:src128","src128")
#author("2022-07-08T15:23:53+00:00","default:src128","src128")
*目次 [#sb60955c]
#contents

*Float [#te5bd41b]
**定数 [#y1841ec6]
,DIG,Float が表現できる最大の 10 進桁数
,EPSILON,1.0 + Float::EPSILON != 1.0 となる最小の値
,MANT_DIG,仮数部の Float::RADIX 進法での桁数
,MAX,Float が取り得る最大値
,MIN,Float が取り得る最小値
,MAX_10_EXP,最大の 10 進の指数
,MIN_10_EXP,最小の 10 進の指数
,MAX_EXP,最大のFloat::RADIX 進の指数
,MIN_EXP,最小のFloat::RADIX 進の指数
,RADIX,指数表現の基数
,ROUNDS,丸めモード (-1: 不定、0: 0.0 の方向に丸め、1: 四捨五入、2:正の無限 大の方向に丸め、3:負の無限大の方向に丸め)


*Tips [#baced806]
**任意の桁で四捨五入する [#l2fe2979]

[[Numeric - Rubyリファレンスマニュアル:http://www.ruby-lang.org/ja/man/html/Numeric.html#truncate]]に書いてある。

#pre{{
class Numeric
  def roundup(d=0)
    x = 10**d
    if self > 0
      (self * x).ceil.quo(x)
    else
      (self * x).floor.quo(x)
    end
  end

  def rounddown(d=0)
    x = 10**d
    if self < 0
      (self * x).ceil.quo(x)
    else
      (self * x).floor.quo(x)
    end
  end

  def roundoff(d=0)
    x = 10**d
    if self < 0
      (self * x - 0.5).ceil.quo(x)
    else
      (self * x + 0.5).floor.quo(x)
    end
  end
end

if $0 == __FILE__
  x = 123.543
  puts x.roundoff(2)  # => 123.54
  puts x.roundoff(1)  # => 123.5
  puts x.roundoff(0)  # => 124.0
  puts x.roundoff(-1) # => 120.0
  puts x.roundoff(-2) # => 100.0
end
}}

**数値をカンマ区切りに [#i3979f5f]
-Railsには便利なメソッドがあるがRubyはない。いろんな方法があるが正規表現の場合以下で変換できる。

  num = 1234567890
  p num.to_s.gsub(/(\d)(?=\d{3}+$)/, '\\1,') #=> "1,234,567,890"

-他にもいろいろな方法あり。 [[Ruby - 3桁区切りの数字に変換(その2)! - mk-mode BLOG:https://www.mk-mode.com/blog/2020/04/19/ruby-convert-val-to-3-digit/]]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS