|
@@ -0,0 +1,113 @@
|
|
|
+;(function (s) {
|
|
|
+
|
|
|
+ var NumtoEnglish = {},
|
|
|
+ n = '',
|
|
|
+ xiao = '',
|
|
|
+ zheng = '',
|
|
|
+ regxinteger = /^([0-9]{1,}([.][0-9]*)?)$/
|
|
|
+
|
|
|
+ NumtoEnglish.tally = {
|
|
|
+ arr1: ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'],
|
|
|
+ arr2: ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'],
|
|
|
+ arr3: ['twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'],
|
|
|
+ arr4: ['hundred', 'thousand', 'million', 'billion', 'trillion', 'quadrillion'],
|
|
|
+ }
|
|
|
+
|
|
|
+ NumtoEnglish.Convert_integer = function (n) {
|
|
|
+ try {
|
|
|
+ var fenge = this.toThousands(n).split(',')
|
|
|
+ var result = ''
|
|
|
+ for (var i = 0; i < fenge.length; i++) {
|
|
|
+ if (fenge[i].length == 3) {
|
|
|
+ result += this.tally.arr1[fenge[i].substring(0, 1)] + ' '
|
|
|
+ result += this.tally.arr4[0]
|
|
|
+ if (this.doubledight(fenge[i].substring(1)) != '') {
|
|
|
+ result += ' and ' + this.doubledight(fenge[i].substring(1))
|
|
|
+ }
|
|
|
+ } else if (fenge[i].length == 2) {
|
|
|
+ result += this.doubledight(fenge[i])
|
|
|
+ } else if (fenge[i].length == 1) {
|
|
|
+ result += this.tally.arr1[fenge[i]]
|
|
|
+ }
|
|
|
+
|
|
|
+ if (i < fenge.length - 1) {
|
|
|
+ result += ' ' + this.tally.arr4[fenge.length - 1 - i] + ' '
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result
|
|
|
+ } catch (ex) {
|
|
|
+ console.error(ex)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ NumtoEnglish.Convert_decimal = function (n) {
|
|
|
+ var d = n.split('')
|
|
|
+ var result = ''
|
|
|
+ if (d.length > 0) {
|
|
|
+ for (let i = 0; i < d.length; i++) {
|
|
|
+ result += this.Convert_integer(d[i]) + ' '
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ return result
|
|
|
+ }
|
|
|
+
|
|
|
+ NumtoEnglish.doubledight = function (n) {
|
|
|
+ var result = ''
|
|
|
+ if (parseInt(n) != 0) {
|
|
|
+ var dd = n.split('')
|
|
|
+ if (dd[0] < 1) {
|
|
|
+ result = this.tally.arr1[dd[1]]
|
|
|
+ } else if (dd[0] == 1) {
|
|
|
+ result = this.tally.arr2[dd[1]]
|
|
|
+ } else {
|
|
|
+ if (this.tally.arr1[dd[1]] !== 'zero') {
|
|
|
+ result = this.tally.arr3[dd[0] - 2] + '-' + this.tally.arr1[dd[1]]
|
|
|
+ } else {
|
|
|
+ result = this.tally.arr3[dd[0] - 2]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ NumtoEnglish.toThousands = function (num) {
|
|
|
+ var num = (num || 0).toString(),
|
|
|
+ result = ''
|
|
|
+ while (num.length > 3) {
|
|
|
+ result = ',' + num.slice(-3) + result
|
|
|
+ num = num.slice(0, num.length - 3)
|
|
|
+ }
|
|
|
+ if (num) {
|
|
|
+ result = num + result
|
|
|
+ }
|
|
|
+ return result
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ s.prototype.toEnglish = function () {
|
|
|
+ n = this
|
|
|
+ if (!regxinteger.test(parseInt(n))) {
|
|
|
+ return 'Error:Must in digital format'
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ var NumList = n.toString().split('.'),
|
|
|
+ zheng = NumtoEnglish.Convert_integer(NumList[0])
|
|
|
+
|
|
|
+ if (NumList.length == 2) {
|
|
|
+ if (NumList[1].length <= 2) {
|
|
|
+ xiao = NumtoEnglish.Convert_decimal(NumList[1])
|
|
|
+ } else {
|
|
|
+
|
|
|
+ return n
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return zheng + (xiao == '' ? '' : ' point ' + xiao)
|
|
|
+ }
|
|
|
+})(String)
|