将数字转换为千里马中的单词

时间:2015-02-18 06:38:03

标签: maxima

我试图将数字转换为英语等价物。例如,字符串' 15'将被转换为'十五'。

我发现这个代码sniipet似乎在Maxima手册中有效,但它使用了文件处理功能:

(%i1) s: openw("E:/file.txt");
(%o1)                     #<output stream E:/file.txt>
(%i2) control: 
 "~2tAn atom: ~20t~a~%~2tand a list: ~20t~{~r ~}~%~2t\
and an integer: ~20t~d~%"$
(%i3) printf( s,control, 'true,[1,2,3],42 )$
(%o3)                                false
(%i4) close(s);
(%o4)                                true
(%i5) s: openr("E:/file.txt");
(%o5)                     #<input stream E:/file.txt>
(%i6) while stringp( tmp:readline(s) ) do print(tmp)$
  An atom:          true 
  and a list:       one two three  
  and an integer:   42 
 (%i7) close(s)$

不使用文件必须有一种更简单,更直接的方法。

1 个答案:

答案 0 :(得分:3)

printf使用~r格式指令将数字拼写为单词。您可以从printf(false, ...)获取字符串,也可以使用printf(true, ...)打印到控制台。有关详细信息,请参阅? printf

(%i1) printf (true, "~r~%", 15);
fifteen
(%o1)                                false
(%i2) my_string : printf (false, "~r", 15);
(%o2)                               fifteen
(%i3) my_string;
(%o3)                               fifteen