首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby Integer / Fixnum奇怪

Ruby Integer / Fixnum奇怪
EN

Stack Overflow用户
提问于 2010-09-15 13:03:09
回答 1查看 695关注 0票数 1

我正在试着写一个从整数中取出最低序号的函数。例如:

代码语言:javascript
复制
> 24689.lowest_order
=> 9

到目前为止,我有:

代码语言:javascript
复制
class Integer
  def lowest_order
    Integer (self / 10.0 - self / 10) * 10
  end
end

和it works....sometimes:

代码语言:javascript
复制
irb(main):002:0> n = 235
=> 235
irb(main):007:0> n.class
=> Fixnum
irb(main):004:0> n/10.0
=> 23.5
irb(main):005:0> n/10
=> 23
irb(main):003:0> n.lowest_order
=> 5
irb(main):008:0> (n/10.0 - n/10)*10
=> 5.0

而在其他情况下,它会失败(示例之间没有代码更改):

代码语言:javascript
复制
irb(main):010:0> n = 232
=> 232
irb(main):021:0> n.class
=> Fixnum
irb(main):009:0> n.lowest_order
=> 1
irb(main):011:0> n/10.0
=> 23.2
irb(main):012:0> n/10
=> 23
irb(main):013:0> n/10.0 - n/10
=> 0.199999999999999
irb(main):022:0> n = Integer 232
=> 232
irb(main):023:0> n/10.0 - n/10
=> 0.199999999999999

这是怎么回事?我不希望仅仅为了获取数字的最小部分而通过字符串过滤整数。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-15 13:18:20

有没有什么原因你不能只做n % 10n.modulo 10 (参见documentation)?

回答“为什么这个不起作用?”你问题的一部分,答案是floating point arithmetic doesn't always behave as you'd expect it to

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

https://stackoverflow.com/questions/3714807

复制
相关文章

相似问题

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