使用Mathematica中的单词表达数字

Yon*_*ing 4 wolfram-mathematica

我听说我们可以用英文单词来表达Mathematica中的数字.喜欢使用来表达100.哪个功能可以做到?

Sim*_*mon 5

一个基本上等同于dreeves解决方案的解决方案(但他的回答时不可用)将是WolframAlpha[]直接从Mathematica 打电话(这需要互联网连接).例如,

WolframAlpha["6 million 2 hundred and 12 thousand and fifty two", 
             {{"Input", 1}, "Plaintext"}]
Run Code Online (Sandbox Code Playgroud)

返回字符串

"6212052"
Run Code Online (Sandbox Code Playgroud)

所以我们可以构造以下函数来返回实际的数字

textToNumber[num_String] := 
 Module[{in = WolframAlpha[num, {{"Input", 1}, "Plaintext"}]},
  If[StringMatchQ[in, NumberString], ToExpression[in], $Failed]]
Run Code Online (Sandbox Code Playgroud)

它也适用于小数和负数,例如textToNumber["minus one point one"].

请注意,我们可以要求除"Plaintext"输出之外的其他内容.找出可用内容的最简单方法是输入一些数字,例如,WolframAlpha["twelve"]当您按下每个"pod"右侧的⨁标志时,探索可用的选项.它也值得探索文档,在那里您可以找到有用的输出"格式",如"MathematicaParse""PodIDs".

我们也可以走另一个方向:

numberToText[num_Integer] := WolframAlpha[ToString[num], 
                               {{"NumberName", 1}, "Plaintext"}]
Run Code Online (Sandbox Code Playgroud)

我找不到正确的咒语来获得非整数的口语短语形式.如果有人知道正确的咒语,或者W | A获得此能力,请随时更新此答案.遗憾的是SpokenString,没有选择将数字作为口头短语的选择.