我需要一个函数来返回字符串中数字的乘积:
SomeFunc("1234") -> 1 * 2 * 3 * 4 = 24
这是我的代码:
lists:foldr(fun(X, Y) -> X * Y end, 1, "1234").
但我得到6497400。
为什么以及如何修复代码?
答案 0 :(得分:6)
您的代码乘以字符的ascii代码,即49 * 50 * 51 * 52。为了获得所需的结果,请使用
lists:foldr(fun(X, Y) -> (X-$0)*Y end, 1, "1234")
其中$0
是字符'0'的ASCII码。