我有兴趣编写一个函数来将数字转换为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
答案 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::Char
。 int(c)
会给我们ASCII字符代码,所以我们需要将它改回字符串然后转换为整数。