gpt4 book ai didi

ruby - 如何从整数中得到 10s、100s、1000s?

转载 作者:太空宇宙 更新时间:2023-11-03 18:12:51 27 4
gpt4 key购买 nike

ruby 中是否有允许将整数分解为 1、10、100、1000 等的方法?

我知道您可以将整数转换为字符串并解析该字符串以获得上述值,但我想像大多数其他事情一样,有一种非常简单的方法可以使用 ruby​​ 执行此操作。到目前为止我有这个:

1234.to_s.chars.reverse.each_with_index
.map{|character, index| character.to_i * 10**index }
# => [4, 30, 200, 1000]

但是在 ruby​​ 中有什么特定的东西可以做到这一点吗?

最佳答案

你可以这样做:

n = 1020304

Math.log10(n).ceil.times.with_object([]) do |i,a|
n, d = n.divmod(10)
a << d * 10**i
end
#=> [4, 0, 300, 0, 20000, 0, 1000000]

嗯。这看起来有点奇怪。也许返回一个散列会更好:

Math.log10(n).ceil.times.with_object({}) do |i,h|
n, d = n.divmod(10)
h[10**i] = d
end
#=> {1=>4, 10=>0, 100=>3, 1000=>0, 10000=>2, 100000=>0, 1000000=>1}

关于ruby - 如何从整数中得到 10s、100s、1000s?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31230815/

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