我有兴趣编写一个函数来将数字转换为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
Run Code Online (Sandbox Code Playgroud)
小智 11
Base中的数字功能怎么样?
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
Run Code Online (Sandbox Code Playgroud)
这个怎么样:
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]
Run Code Online (Sandbox Code Playgroud)
要按照你正在做的风格(你可能不应该这样做)来做,你可以做到
x = 123456789
digits = [int(string(c)) for c in string(x)]
println(digits) # {1,2,3,4,5,6,7,8,9}
Run Code Online (Sandbox Code Playgroud)
凡c in string(x)在字符串中的字符进行迭代,所以c::Char.int(c)会给我们ASCII字符代码,所以我们需要将它改回字符串然后转换为整数.