Last active
April 28, 2020 12:08
-
-
Save PolarBearGG/8f080d305883058ec14c4c1f11c63669 to your computer and use it in GitHub Desktop.
Convert number to text number like 1 - one
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var mapNumbers = { | |
0 : [2, 1, "нуль"], | |
1 : [0, 2, "одна", "один"], | |
2 : [1, 2, "дві", "дві"], | |
3 : [1, 1, "три"], | |
4 : [1, 1, "чотири"], | |
5 : [2, 1, "п'ять"], | |
6 : [2, 1, "шість"], | |
7 : [2, 1, "сім"], | |
8 : [2, 1, "вісім"], | |
9 : [2, 1, "дев'ять"], | |
10 : [2, 1, "десять"], | |
11 : [2, 1, "одинадцять"], | |
12 : [2, 1, "дванадцять"], | |
13 : [2, 1, "тринадцять"], | |
14 : [2, 1, "чотирнадцять"], | |
15 : [2, 1, "п'ятнадцять"], | |
16 : [2, 1, "шістнадцять"], | |
17 : [2, 1, "сімнадцять"], | |
18 : [2, 1, "вісімнадцять"], | |
19 : [2, 1, "дев'ятнадцять"], | |
20 : [2, 1, "двадцять"], | |
30 : [2, 1, "тридцять"], | |
40 : [2, 1, "сорок"], | |
50 : [2, 1, "п'ятдесят"], | |
60 : [2, 1, "шістдесят"], | |
70 : [2, 1, "семдесят"], | |
80 : [2, 1, "вісемдесят"], | |
90 : [2, 1, "дев'яносто"], | |
100 : [2, 1, "сто"], | |
200 : [2, 1, "двісті"], | |
300 : [2, 1, "триста"], | |
400 : [2, 1, "чотириста"], | |
500 : [2, 1, "п'ятсот"], | |
600 : [2, 1, "шістсот"], | |
700 : [2, 1, "сімсот"], | |
800 : [2, 1, "вісімсот"], | |
900 : [2, 1, "дев'ятсот"] | |
}; | |
var mapOrders = [ | |
{ _Gender : true, _arrStates : ["гривня", "гривні", "гривень"] }, | |
{ _Gender : false, _arrStates : ["тисяча", "тисячі", "тисяч"] }, | |
{ _Gender : true, _arrStates : ["мільйон", "мільйона", "мільйонів"] }, | |
{ _Gender : true, _arrStates : ["мільярд", "мільярдй", "мільярдів"] }, | |
{ _Gender : true, _arrStates : ["трильйон", "трильйона", "трильйонів"] } | |
]; | |
var objKop = { _Gender : false, _arrStates : ["копійка", "копійки", "копійок"] }; | |
function Value(dVal, bGender) { | |
var xVal = mapNumbers[dVal]; | |
if (xVal[1] == 1) { | |
return xVal[2]; | |
} else { | |
return xVal[2 + (bGender ? 0 : 1)]; | |
} | |
} | |
function From0To999(fValue, oObjDesc, fnAddNum, fnAddDesc) | |
{ | |
var nCurrState = 2; | |
if (Math.floor(fValue/100) > 0) { | |
var fCurr = Math.floor(fValue/100)*100; | |
fnAddNum(Value(fCurr, oObjDesc._Gender)); | |
nCurrState = mapNumbers[fCurr][0]; | |
fValue -= fCurr; | |
} | |
if (fValue < 20) { | |
if (Math.floor(fValue) > 0) { | |
fnAddNum(Value(fValue, oObjDesc._Gender)); | |
nCurrState = mapNumbers[fValue][0]; | |
} | |
} else { | |
var fCurr = Math.floor(fValue/10)*10; | |
fnAddNum(Value(fCurr, oObjDesc._Gender)); | |
nCurrState = mapNumbers[fCurr][0]; | |
fValue -= fCurr; | |
if (Math.floor(fValue) > 0) { | |
fnAddNum(Value(fValue, oObjDesc._Gender)); | |
nCurrState = mapNumbers[fValue][0]; | |
} | |
} | |
fnAddDesc(oObjDesc._arrStates[nCurrState]); | |
} | |
function FloatToSamplesInWordsUkr(fAmount) | |
{ | |
var fInt = Math.floor(fAmount + 0.005); | |
var fDec = Math.floor(((fAmount - fInt) * 100) + 0.5); | |
var arrRet = []; | |
var iOrder = 0; | |
var arrThousands = []; | |
for (; fInt > 0.9999; fInt/=1000) { | |
arrThousands.push(Math.floor(fInt % 1000)); | |
} | |
if (arrThousands.length == 0) { | |
arrThousands.push(0); | |
} | |
function PushToRes(strVal) { | |
arrRet.push(strVal); | |
} | |
for (var iSouth = arrThousands.length-1; iSouth >= 0; --iSouth) { | |
if (arrThousands[iSouth] == 0) { | |
continue; | |
} | |
From0To999(arrThousands[iSouth], mapOrders[iSouth], PushToRes, PushToRes); | |
} | |
if (arrThousands[0] == 0) { | |
// Handle zero amount | |
if (arrThousands.length == 1) { | |
PushToRes(Value(0, mapOrders[0]._Gender)); | |
} | |
var nCurrState = 2; | |
PushToRes(mapOrders[0]._arrStates[nCurrState]); | |
} | |
if (arrRet.length > 0) { | |
// Capitalize first letter | |
arrRet[0] = arrRet[0].match(/^(.)/)[1].toLocaleUpperCase() + arrRet[0].match(/^.(.*)$/)[1]; | |
} | |
arrRet.push((fDec < 10) ? ("0" + fDec) : ("" + fDec)); | |
From0To999(fDec, objKop, function() {}, PushToRes); | |
return arrRet.join(" "); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment