打印

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

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

今天来求平方根。
输入N,M为自然数,求N的平方根,精确到M位小数。
本帖最近评分记录
  • drive2me 威望 +10 谢谢! 2008-6-3 23:20
  • drive2me R币 +10 谢谢! 2008-6-3 23:20
  • drive2me 贡献 +10 谢谢! 2008-6-3 23:20
  • 5swords R币 +5 谢谢题目, 先来报道. 2008-6-3 14:43

TOP

没人嘛。。。。

TOP

放假都出去玩了吧,回来还没有缓过劲呢?!
Flying Piggy...! 
天地人合一!

TOP

我回来了!不知道用了BigDecimal库算不算作弊。

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)


[ 本帖最后由 AllenDang 于 2008-6-24 14:34 编辑 ]
本帖最近评分记录
  • 5swords R币 +5 很精彩 2008-6-24 17:22

TOP

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

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

TOP

很久没来了

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


本帖最近评分记录
  • drive2me R币 +10 估计继续来参与! 2008-7-1 11:10

TOP

2008-11-22 19:34 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html) @38.103.63.61