gpt4 book ai didi

Ruby Integer/Fixnum 怪异

转载 作者:太空宇宙 更新时间:2023-11-03 17:41:06 26 4
gpt4 key购买 nike

我正在尝试编写一个从整数中提取最低阶数的函数。例如:

> 24689.lowest_order
=> 9

到目前为止我有:

class Integer
def lowest_order
Integer (self / 10.0 - self / 10) * 10
end
end

它有效......有时:

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

而其他时候它会失败(示例之间没有代码更改):

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

这是怎么回事?我宁愿不必通过字符串过滤整数来获取数字的最小部分。

谢谢!

最佳答案

您是否有理由不能只执行 n % 10n.modulo 10(请参阅 documentation)?

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

关于Ruby Integer/Fixnum 怪异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3714807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com