FromDigits发生了什么?

时间:2015-01-03 05:44:20

标签: wolfram-mathematica

我以为我知道FromDigits是如何工作的,但它现在正在做一些疯狂的事情。

n[[990;;]]
FromDigits[n[[990;;]]]

输出:

{9, 50, 0, 50, 1, 50, 2, 50, 3, 50, 4, 50, 5, 50, 6, 50, 7, 50, 8, 50, 9}
1405060708091011121309

而不是,你知道,950050150 ...

发生了什么?

3 个答案:

答案 0 :(得分:5)

文档说

FromDigits : constructs an integer from the list of its decimal digits.

因此,对于简单的连接,数组中的每个数字必须小于10(十进制数字)。

大于基数的数字"携带":例如

FromDigits[{7, 11, 0, 0, 0, 122}] will give 810122

有关更多信息,请转到http://reference.wolfram.com/language/ref/FromDigits.html

答案 1 :(得分:2)

我认为"字符串黑客"可能是你要求的。此

myn = {9, 50, 0, 50, 1, 50, 2, 50, 3, 50, 4, 50, 5, 50, 6, 50, 7, 50, 8, 50, 9};
ToExpression[StringReplace[ToString[myn], ", " -> ""]][[1]]

给你这个整数

9500501502503504505506507508509

将列表转换为字符串,用任何内容替换每个逗号空格分隔符,将生成的字符串转换回整数并丢弃现在不需要的大括号。

答案 2 :(得分:1)

其他两种方式..

     FromDigits@Flatten@IntegerDigits@
        {9, 50, 0, 50, 1, 50, 2, 50, 3, 50, 4, 50, 5, 50, 6, 50, 7, 50, 8, 50, 9}

9500501502503504505506507508509

     (ToString /@ # // StringJoin // ToExpression) &@
        {9, 50, 0, 50, 1, 50, 2, 50, 3, 50, 4, 50, 5, 50, 6, 50, 7, 50, 8, 50, 9} 

9500501502503504505506507508509