-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnumber2text.js
114 lines (104 loc) · 2.71 KB
/
number2text.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
let sifferNavn = [
"null",
"en",
"to",
"tre",
"fire",
"fem",
"seks",
"syv",
"åtte",
"ni",
"ti",
"elleve",
"tolv",
"tretten",
"fjorten",
"femten",
"seksten",
"sytten",
"atten",
"nitten",
];
let tierNavn = [
null,
"ti",
"tjue",
"tretti",
"førti",
"femti",
"seksti",
"sytti",
"åtti",
"nitti",
];
let storeTallNavn = {
0: "",
100: "hundre",
1000: "tusen",
1_000_000: "million",
1_000_000_000: "milliard",
1_000_000_000_000: "billion",
1_000_000_000_000_000: "billiard",
}; // TODO: Få inn flere tall her
export function convertNumberWithComma(num) {
let numberString = new String(num);
let numberStrings = numberString.split(".");
let beforeComma = parseInt(numberStrings[0]);
let afterComma = parseInt(numberStrings[1]);
if (afterComma != 0) {
return convertNumber(beforeComma) + "komma" + convertNumber(afterComma)
}
else {
return convertNumber(beforeComma)
}
}
export function convertNumber(num) {
const result = [];
let thousands = 0;
while (num != 0) {
let lastThreeDigits = num % 1000;
let iterationDigits = convertNumberUnderThousand(lastThreeDigits)
result.splice(0, 0, (thousands == 1 && !result[0].includes("hundre") ? "og" : "")) // tusenogtjueseks i stedet for tusentjueseks.
result.splice(0, 0, storeTallNavn[thousands * 1000]) // tusen/million/milliard/osv.
result.splice(0, 0, (iterationDigits == "en" && thousands == 1 ? "et" : iterationDigits)) // "ett" foran tusen i stedet for "en"
thousands += 1;
num = Math.floor(num / 1000);
}
return result.join("\xAD");
}
function convertNumberUnderThousand(num) {
let useOg = false;
const result = [];
if (num == 0) {
return sifferNavn[0];
}
if (num >= 200) {
result.splice(result.length, 0, sifferNavn[Math.trunc(num / 100)])
result.splice(result.length, 0, storeTallNavn[100])
} else if (num >= 100) {
result.splice(result.length, 0, "ett")
result.splice(result.length, 0, storeTallNavn[100])
}
if (num >= 101) {
useOg = true;
}
num = num % 100;
if (num == 0) {
return result.join("\xAD");
}
if (useOg) {
result.splice(result.length, 0, "og")
}
if (num < 20) {
result.splice(result.length, 0, sifferNavn[num])
} else {
result.splice(result.length, 0, tierNavn[Math.trunc(num / 10)])
num = num % 10;
if (num == 0) {
return result.join("\xAD");
}
result.splice(result.length, 0, sifferNavn[num])
}
return result.join("\xAD");
}