查看完整版本: 2008-06-03 Ruby 测试题(00018)

jmouse 2008-6-3 13:59

2008-06-03 Ruby 测试题(00018)

今天来求平方根。
输入N,M为自然数,求N的平方根,精确到M位小数。

jmouse 2008-6-10 16:05

没人嘛。。。。

drive2me 2008-6-11 01:16

放假都出去玩了吧,回来还没有缓过劲呢?!

AllenDang 2008-6-24 14:32

我回来了!不知道用了BigDecimal库算不算作弊。[code]require "bigdecimal"
def sqrt (n,m)
        a = BigDecimal(n.to_s)
        b = a/2
        while ((b*b-a).abs>0.001)
                b=(b+a/b)/2
        end
        b.round(m).to_s("F")
end

puts sqrt(2,5)[/code]

[[i] 本帖最后由 AllenDang 于 2008-6-24 14:34 编辑 [/i]]

5swords 2008-6-24 17:21

不过, 好象精确不到M位. 虽然有M位小数, 但是这M位不对.

[[i] 本帖最后由 5swords 于 2008-6-26 15:40 编辑 [/i]]

liumuqing 2008-6-29 19:25

很久没来了[code]def sqrt(n, m)
  nn = n**2
  a, b = 1.0, n
  a, b = b, a if a > b
  aa, bb = a**2, b**2
  key = 1.0/ (10**m)
  while b - a > key
    mid = (b + a) / 2
    midmid = mid**2
    if midmid < n
      aa = midmid
      a = mid
    elsif midmid > n
      bb = midmid
      b = mid
    else
      a = mid
      b = mid
    end
  end
  return a
end

# TEST
puts sqrt(0.5, 10)
puts 0.5 **0.5

puts

puts sqrt(2, 10)
puts 2 **0.5[/code]
页: [1]
查看完整版本: 2008-06-03 Ruby 测试题(00018)