⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 06 - taking logarithms.rb

📁 O Reilly Ruby Cookbook source code
💻 RB
字号:
Math.log(1)                                    # => 0.0Math.log(Math::E)                              # => 1.0Math.log(10)                                   # => 2.30258509299405Math::E ** Math.log(25)                        # => 25.0#---Math.log10(1)                                  # => 0.0Math.log10(10)                                 # => 1.0Math.log10(10.1)                               # => 1.00432137378264Math.log10(1000)                               # => 3.010 ** Math.log10(25)                           # => 25.0#---module Math  def Math.logb(num, base)    log(num) / log(base)  endend#---dividend = Math.log(2)(1..6).collect { |x| Math.log(x) / dividend }# => [0.0, 1.0, 1.58496250072116, 2.0, 2.32192809488736, 2.58496250072116]#---require 'bigdecimal'require 'bigdecimal/math'require 'bigdecimal/util'module BigMath  alias :log_slow :log  def log(x, prec)    if x <= 0 || prec <= 0      raise ArgumentError, "Zero or negative argument for log"    end    return x if x.infinite? || x.nan?    sign, fraction, power, exponent = x.split    fraction = BigDecimal(".#{fraction}")    power = power.to_s.to_d    log_slow(fraction, prec) + (log_slow(power, prec) * exponent)  endend#---include BigMathnumber = BigDecimal("1234.5678")Math.log(number)                        # => 7.11847622829779prec = 50BigMath.log_slow(number, prec).round(prec).to_s("F")# => "7.11847622829778629250879253638708184134073214145175"BigMath.log(number, prec).round(prec).to_s("F")# => "7.11847622829778629250879253638708184134073214145175"BigMath.log(number ** 1000, prec).round(prec).to_s("F")# => "7118.47622829778629250879253638708184134073214145175161"#---huge_number = BigDecimal("1000") ** 1000base = BigDecimal("10")(BigMath.log(huge_number, 100) / BigMath.log(base, 100)).to_f# => 3000.0#---

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -