且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Javascript将数据转成英文书写格式

更新时间:2022-04-13 00:10:09

var  aTens = [ "TWENTY", "THIRTY", "FORTY", "FIFTY", "SIXTY", "SEVENTY", "EIGHTY", "NINETY"];
var aOnes = [ "ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE",
"TEN", "ELEVEN", "TWELVE", "THIRTEEN", "FOURTEEN", "FIFTEEN", "SIXTEEN", "SEVENTEEN", "EIGHTEEN",
"NINETEEN" ];

function ConvertToHundreds(num)
{
var cNum, nNum;
var cWords = "";

num %= 1000;
if (num > 99) {
  /* Hundreds. */
  cNum = String(num);
  nNum = Number(cNum.charAt(0));
  cWords += aOnes[nNum] + " HUNDRED";
  num %= 100;
  if (num > 0)
     cWords += " AND "
}



if (num > 19) {
  /* Tens. */
  cNum = String(num);
  nNum = Number(cNum.charAt(0));
  cWords += aTens[nNum - 2];
  num %= 10;
  if (num > 0)
     cWords += " ";
}

if (num > 0) {
  /* Ones and teens. */
  nNum = Math.floor(num);
  cWords += aOnes[nNum];
}

return cWords;
}

function ConvertToWords(num)
{
var aUnits = [ "THOUSAND", "MILLION", "BILLION", "TRILLION", "QUADRILLION" ];
var cWords = (num >= 1 && num < 2) ? "" : "";
var nLeft = Math.floor(num);
for (var i = 0; nLeft > 0; i++) {
   if (nLeft % 1000 > 0) {
      if (i != 0)
         cWords = ConvertToHundreds(nLeft) + " " + aUnits[i - 1] + " " + cWords;
      else
         cWords = ConvertToHundreds(nLeft) + " " + cWords;
   }
   nLeft = Math.floor(nLeft / 1000);
}
num = Math.round(num * 100) % 100;
if (num > 0)
  cWords += ConvertToHundreds(num) + " CENTS ";
// else
//  cWords += "Zero Cents";

return cWords+'ONLY';
}

调用:
ConvertToWords(123,450,000.66) -->ONE HUNDRED AND TWENTY THREE MILLION FOUR HUNDRED AND FIFTY THOUSAND SIXTY SIX CENTS ONLY