朱莉娅:将数字分成不同的数字

时间:2014-09-14 19:01:01

标签: julia

我有兴趣编写一个函数来将数字转换为Julia中的单词。例如f(1234)返回"one thousand two hundred and thirty-four"

我很想知道如何提取每个数字并将其转回数字。以下作品,但它非常难看。感谢

x = 123456789
digits = split("$x","")
intx = zeros(length(digits))
for i=1:length(digits) intx[i]=int(digits[i]) end
intx

2 个答案:

答案 0 :(得分:11)

Base中的digits函数怎么样?

In  [23]: x = 123456789

Out [23]: 123456789

In  [24]: digits(x)

Out [24]: 9-element Array{Int64,1}:
 9
 8
 7
 6
 5
 4
 3
 2
 1

答案 1 :(得分:5)

这个怎么样:

x = 123456789
digits = Int[]  # Empty array of Ints
while x != 0
    rem = x % 10  # Modulo division - get last digit
    push!(digits, rem)
    x = div(x,10)  # Integer division - drop last digit
end
println(digits)  # [9,8,7,6,5,4,3,2,1]

要以你正在做的风格(你可能不应该这样做)来做,你可以做到

x = 123456789
digits = [int(string(c)) for c in string(x)]
println(digits)  # {1,2,3,4,5,6,7,8,9}

c in string(x)迭代字符串的字符,c::Charint(c)会给我们ASCII字符代码,所以我们需要将它改回字符串然后转换为整数。