Javascript数字到单词 - vigesimal

Javascript numbers to words - vigesimal

本文关键字:vigesimal 单词 数字 Javascript      更新时间:2023-09-26

我想创建一个数字到单词转换器,例如 http://gwydir.demon.co.uk/jo/numbers/words/intro.htm

但是,我正在为使用vigesimal数字系统的外语执行此操作 - 以二十为单位计数。我想从 1-199 开始。

1-20 很容易,但之后它会改变。 20-39遵循"一对二十"(21),"二对二十"(22)的模式,直到"十八对二十"(38),"十九对二十"(39)。

40-99 和 120-199 仍然不同,因为它计入分数:"一和二二十"(41)、"二和二二十"(42)、"一和三二十"(61)、十和三二十(70)、十一和三二十(71)、"一和四二十"(81)、"六二十"(120)、"一和六二十"(121)、"九二十"(

180)、"一和九二十"(181), 《一九九二十》(199)

100-119与英语相似:百零一(101),百

零二(102),百和十一(111),百和十九(119)

这是我用于输入表单的 html:

<table align=center>
<tr><td>
<form action="#" name="conv">
Enter number:
<input type="text" name="numb" size="15">
<input type="button" value="Show number" onclick="getnum(document.conv.numb.value)">
</form>
</td></tr>
<tr><td align=center><span id="outp">&nbsp;</span></td></tr>
</TABLE>

这是我对最多二十个数字的Javascript:

var units = new Array(21)
units[0]=""
units[1]="onen"
units[2]="dew"
units[3]="tri"
units[4]="pajar"
units[5]="pemp"
units[6]="whegh"
units[7]="seyth"
units[8]="eth"
units[9]="naw"
units[10]="deg"
units[11]="udnek"
units[12]="dowdhek"
units[13]="tredhek"
units[14]="peswardhek"
units[15]="pemthek"
units[16]="whetek"
units[17]="seytek"
units[18]="etek"
units[19]="nownsek"
units[20]="ugens"

我的问题是,如何开始创建允许我将数字转换为正确单词的代码?谁能指出一些会有所帮助的例子?我见过它为英语做的例子,但由于数字系统如此不同,我看不出如何将其转换为 vigesimal 系统。

谢谢

以下函数应该让您了解如何解决此问题:

function getnum(s){
    var n = parseInt(s);
    if( 1 <= n && n <= 20 ){ alert(units[n]); }
    if( (40 <= n && n <= 99) || (120 <= n && n <= 199) ){
      var q = Math.floor(n / 20);
      var r = n % 20;
      !r && (alert (units[q] + ' ' + units[20]));
      r && (alert (units[r] + ' and ' + units[q] + ' ' + units[20]));    
    }    
}

现在您应该能够弄清楚100 <= number <= 119的转换。21 <= number <= 39也类似.

让我们通过一个例子来工作:考虑数字x

首先弄清楚数字中有多少个 100。我们这样做是这样的:x/100因为整数除法会截断任何余数。这就是我们的第一部分:units[x/100] + " hundred"

现在让我们做剩下的,由 y=x%100 给出。有二十多y/20。剩下的y%20。所以字符串的其余部分是units[y%20] + " and " + units[y/20] + " " units[20].

这还不是 100% 完美的,因为它不能正确处理没有余数的数字,例如 640。但这些只是一些特殊情况,我相信你可以毫不费力地弄清楚。