草庐IT

img_float

全部标签

ruby - 如何确定负 float 是否在 Ruby 中的另外两个负数之间

为什么会这样-102.between?(-100,-105)在Ruby中,它返回false?-102确实介于-100和-105之间,对吗?我正在尝试使用经度坐标(在我的半球将是负数)来执行此操作,例如如果:ilong=-102.560ifilong.between?(-100.000,-105.000)thenutmzone=10endputsutmzone应该返回10。我该如何实现?-吉姆 最佳答案 -102在-100和-105之间,但是,您指定的顺序倒退为-105-102.between?(-105,-100)

ruby - 使用 float 在 Ruby 中打开范围?

是否可以在ruby​​中创建排除一个或两个端点的范围。那么如何处理开闭区间边界的数学概念呢?例如,我可以定义一个从1.0到10.0的范围,不包括1.0说(用伪ruby)range=[1.0...10.0)range===1.0=>falserange===10.0=>true 最佳答案 Ruby中的Range类只支持封闭和半开(右开)范围。但是,您可以轻松编写自己的代码。这是Ruby中半开范围的示例:range=1.0...10.0range===1.0#=>truerange===10.0#=>falseRubinius中符合Ru

小数点后没有任何零的 Ruby float

我进行了很多搜索,以了解获取float值的确切要求,小数点后没有不需要的零。Eg:14.0shouldbe1414.1shouldbe14.1到目前为止我找到的最接近的可能解决方案是使用sprintf():irb(main):050:0>num=123.0=>123.0irb(main):051:0>sprintf('%g',num)=>"123"这里的问题是我的num类型从Float更改为String。我可以在不更改类型的情况下更改浮点值吗? 最佳答案 尝试:classFloatdeftry_integerto_i==self?t

ruby - 内部舍入问题 : accurate way to sum Ruby floating point numbers?

这当然是坏的:(0.1+0.1+0.1)=>0.30000000000000004(0.1+0.1+0.1)==0.3#false我不需要完美的总和,只要足以说明两个float具有相同的值即可。我能想到的最好办法是将等式两边相乘并四舍五入。这是最好的方法吗?((0.1+0.1+0.1)*1000).round==(0.3*1000).round更新:我卡在了Rubyv1.8.7上。 最佳答案 准确求和和有效比较是有区别的。你说你想要前者,但看起来你想要后者。底层的Rubyfloat算法是IEEE的,并且具有最小化累积误差的合理语义,

Ruby - 如何将混合数转换为 float ?

我需要将混合数转换为浮点型,例如:11/2到1.5。ruby中是否有任何内置方法可以实现相同的目的? 最佳答案 您可以拆分成多个部分,将这些部分转换为Rationals,对有理数求和,并将结果转换为float:s='11/2'f=s.split.map{|r|Rational(r)}.inject(:+).to_f#1.5如果您知道字符串总是有两个部分,那么您可以分别处理这些部分:s='11/2'a=s.splitf=a.first.to_i+Rational(a.last).to_f#1.5如果您不确定会有多少部分(即'1'、'3

ruby - 比较 float 的随机 RSpec 失败(Eq 匹配器)

我什至不确定从哪里开始。抱歉,如果这是重复的,但我什至不知道要搜索什么或这个特定问题的名称。我的RSpec套件中的测试会随机地(但不是经常)失败,我会收到如下错误:expected:0.69got:0.69(0.69e0)(comparedusing==)RSpec代码正在比较来自两个不同模型的两个float,当规范完成时,它们应该是相同的值。有没有办法在命令控制台中重现它?我已经尝试了显而易见的东西(如下),但老实说我不知所措。如果我重新运行测试十几次,我无法重现问题。0.69==0.69e0=>true0.69==0.69=>true6.9e-1==0.69=>true

Ruby:计算 float 中的数字

是否有任何有值(value)的Ruby方法来计算float中的位数?另外,如何指定精确的时间to_sfloat? 最佳答案 #Numberofdigits12345.23.to_s.split("").size-1#=>7#Thepreciouspart("."+12345.23.to_s.split(".")[1]).to_f#=>.023#Iwouldratherused#12345.23-12345.23.to_i#butthisgives0.22999999999563 关于Ru

ruby - 在 ruby​​ 中没有四舍五入的 float 格式

有一个floatnum=22.0098。如何格式化它以限制float后的3位数字?我尝试了sprintf('%.3f',num)但返回的是22.010,不过我需要22.009 最佳答案 我可以考虑使用bigdecimal。不确定它是否矫枉过正:require'bigdecimal'BigDecimal::new("22.0098").truncate(3).to_f#=>22.009 关于ruby-在ruby​​中没有四舍五入的float格式,我们在StackOverflow上找到一个类

Ruby 字符串到 int/float 的转换

假设我有一个字符串,'$3,444.11'。如何将其转换为float3,444.11?我有一个表单域。用户可以插入"3,444.11"、"3444.11"或"$3,444.11"或"€3,444.11"。我需要的是作为float的3,444.11。我必须求助于正则表达式吗?或者,是否已经存在我忽略的功能? 最佳答案 我认为标准库中没有任何东西可以为您做这件事。这是一个快速的单行代码:'$3,444.11'.gsub(/[^\d\.]/,'').to_f#=>3444.11但是,您可能想看一下money用于货币字符串高级处理的gem。

ruby - 如何在 Ruby 中对 float 数组进行排序?

只是想知道如何在Ruby中对float组进行排序,因为“排序”和“排序!”仅适用于整数数组。 最佳答案 float组当然可以排序:>>[6.2,5.8,1.1,4.9,13.4].sort=>[1.1,4.9,5.8,6.2,13.4]也许您的数组中有一个nil,它不能用任何东西排序。 关于ruby-如何在Ruby中对float数组进行排序?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/quest