【发布时间】:2019-08-30 16:01:59
【问题描述】:
我正在尝试编写一个 Haskell 函数来将整数转换为带有字母数字循环的字符串。
通过字母数字,我的意思是与此转换匹配的数字:
1 -> A
2 -> B
3 -> C
..
25 -> Y
26 -> Z
27 -> AA
28 -> AB
29 -> AC
..
我发现这个function 可以将十进制数字转换为罗马数字,并尝试对其进行修改以做我想做的事情。但我没有设法得到正确的结果。问题是在字母计数中,“A”在用作单位或倍数时具有不同的“权重”(它可以是 1 或 0)。
你知道如何获得正确的转换吗?
【问题讨论】:
-
您正在转换为基数 26,其中数字是字母 A-Z。
-
什么,不为零?只有正面?
-
是的,这个功能是重现Office计算列中使用的数字,LaTeX/HTML章节编号(
counter(subsection,upper-alpha)) -
这很容易出错,因为它非常类似于转换为base 26,但在第一个字母上有细微的差别。在基数 26 中,第一个数字的范围从
1到25,而所有其他数字的范围从0到25。相反,在上面的枚举中,所有字母的范围从A到Z。 -
@chi 你说得对,我没有意识到这个微妙之处。我会弄错的。
标签: haskell number-formatting numeric