首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby Math.radians

Ruby Math.radians
EN

Stack Overflow用户
提问于 2010-02-24 16:31:31
回答 3查看 6.2K关注 0票数 3

我需要Math.radians()函数,但找不到它。

代码语言:javascript
复制
radians=(angle/180)* Math::PI
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-25 01:02:28

您可能想要在lib/目录中创建一个名为"mymath.rb“的文件,并像下面这样修补Math:

代码语言:javascript
复制
require 'mathn'
module Math
  def self.to_rad angle
    angle / 180.0 * Math::PI
  end
end

或者你可以按照@MBO在他的评论中说的那样做。链接似乎已关闭,但Google存档中提供了这句信息性的小句子,它表明了一个可能比我的解决方案更干净的解决方案(尽管我更喜欢将数学知识放在数学中):

最简单的解决方案是在Numerical语言中定义一个转换方法,该方法将度数转换为弧度。

值得一提的是,Ruby 2.0有一个称为“细化”的特性,它基本上允许您进行本地修补。它是这样工作的(取自this blog post

代码语言:javascript
复制
module RadiansConversion
  refine Math do
    def to_rad angle
      angle / 180.0 * Math::PI
    end
  end
end

然后..。它可以在另一个模块或类似的东西中使用。

代码语言:javascript
复制
module MyApp
  using RadiansConversion

  p Math.to_rad 180   #=> 3.14159265358979
  p Math.to_rad 235   #=> 4.10152374218667
end
票数 12
EN

Stack Overflow用户

发布于 2015-07-04 00:48:53

或者你可以扩展Float来添加一个'to_rad‘转换:

代码语言:javascript
复制
class Float
 def to_rad
   self/180 * Math::PI
  end
end

并像这样使用它

代码语言:javascript
复制
radian=angle.to_rad
票数 0
EN

Stack Overflow用户

发布于 2012-11-18 23:06:13

编辑(因为投票不通过):对不起!当我回答的时候,我需要这个值的数组,只是想分享我发现的东西。

所以,是的,实际上它只是:

x * (Math::PI / 180)

只是想展示我找到的一个实现。

代码语言:javascript
复制
# Geocoder::Calculations.to_radians(@geocode)
def to_radians(*args)
  args = args.first if args.first.is_a?(Array)
  if args.size == 1
    args.first * (Math::PI / 180)
  else
    args.map{ |i| to_radians(i) }
  end
end

将度数转换为弧度。如果传递了数组(或多个参数),则转换每个值并返回数组。

http://rubydoc.info/github/alexreisner/geocoder/master/Geocoder/Calculations#to_radians-instance_method

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2324587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档