多年的命名惯例(如何用文字写出年份)

时间:2015-07-10 20:27:52

标签: regex naming-conventions future numeric

我编写了一个程序,将给定的数值转换为相应的英语单词,例如

1986年=一九八六年 3287489358475 =三万亿二百八十七亿四千八百九十三百五十八数千四百七十五

只要你知道下一个10 ^ n * 3个地方(千千万,十亿,等等)的名称,就可以轻松扩展。这是通过将每个数字拆分成三个数字的集合然后将相同的命名方案应用于每个集合并在每个集合之后添加令牌以描绘它所代表的功率来实现的。例如,数字12,345,665分为三个数字组

  • 012 = 12
  • 345 =三百四十五
  • 665 =六百六十五

然后添加了令牌和连接

一亿三千四百四十五数千六百六十五。

哪个工作正常,直到至少10 ^ 183(因为在这一点上没有真正一致的名字),我对此很好。然而,我想我也希望它能够将数值转换为您将其视为一年的方式,例如

  • 1986 = 1968年
  • 2015 =二千五十五
  • 2289 =二十八八十九
  • 21345 =?

截至9999年,约定似乎有些一致,您可以将数字分成两位而不是三位,并以与以前相同的方式获取每组数字的名称。在处理以零开始或结束的对时,这只有几个例外。

是例外
  1. 如果第二对以零开头,则在一个值前面添加“o”

    • 21 02 =二十一点二
  2. 如果第二对中的两个数字都为零,则加上

    • 11 00 = 11,1
  3. 如果第一对以零结尾添加“千”并忽略第一和第二规则(如果它们适用)

    • 20 05 =二千四十五
  4. 对于大于9999且特别是大于9999的数字,没有什么听起来像是正确的答案。对于236701,如果你应用与数字< = 9999的情况相同的规则,它将是二十三六十七,但是标准名称二十三万六千七百一听起来真的好。我想知道是否已经建立了一个已经建立的所有年份的小型和大型命名约定?

    现在,我一直在考虑这个问题,我有一个侧面的问题,如果人类能够活到数百万年,他们注定要表达他们目前生活在哪一年如此可怕和繁琐,或者是快速准确地表达时间位置的更好方法是什么?

1 个答案:

答案 0 :(得分:0)

最简单的解决方案是将一美元存入银行账户。这将允许您聘请7985年的程序员,使您的程序适应当时将建立的5位数年份的命名惯例。 (这仅适用于您的计划和美元仍然存在的情况。)

PS:如果我们今天不是4月1日,我会进行双重检查。 :)