This module contains data on various types of numbers in ไทย.

จำนวน เลข เชิงการนับ เชิงอันดับที่ ตัวคูณ เชิงรวบรวม เศษส่วน (⅟…)
0 ศูนย์ (rare, computing) ที่ศูนย์ (rare, computing) ศูนย์เท่า
1 หนึ่ง ที่หนึ่ง, แรก หนึ่งเท่า
2 สอง ที่สอง, รอง สองเท่า คู่ ครึ่ง, ซีก
3 สาม ที่สาม สามเท่า
4 สี่ ที่สี่ สี่เท่า (dated) เสี้ยว
5 ห้า ที่ห้า ห้าเท่า
6 หก ที่หก หกเท่า ครึ่งโหล
7 เจ็ด ที่เจ็ด เจ็ดเท่า
8 แปด ที่แปด แปดเท่า
9 เก้า ที่เก้า เก้าเท่า
10 ๑๐ สิบ ที่สิบ สิบเท่า
11 ๑๑ สิบเอ็ด, (rare, military) สิบหนึ่ง ที่สิบเอ็ด สิบเอ็ดเท่า
12 ๑๒ สิบสอง ที่สิบสอง สิบสองเท่า โหล
13 ๑๓ สิบสาม ที่สิบสาม สิบสามเท่า
14 ๑๔ สิบสี่ ที่สิบสี่ สิบสี่เท่า
15 ๑๕ สิบห้า ที่สิบห้า สิบห้าเท่า
16 ๑๖ สิบหก ที่สิบหก สิบหกเท่า
17 ๑๗ สิบเจ็ด ที่สิบเจ็ด สิบเจ็ดเท่า
18 ๑๘ สิบแปด ที่สิบแปด สิบแปดเท่า
19 ๑๙ สิบเก้า ที่สิบเก้า สิบเก้าเท่า
20 ๒๐ ยี่สิบ, (dialectal) ซาว ที่ยี่สิบ ยี่สิบเท่า
21 ๒๑ ยี่สิบเอ็ด, (rare, military) ยี่สิบหนึ่ง, (dialectal) ซาวเอ็ด ที่ยี่สิบเอ็ด ยี่สิบเอ็ดเท่า
22 ๒๒ ยี่สิบสอง, (dialectal) ซาวสอง ที่ยี่สิบสอง ยี่สิบสองเท่า
23 ๒๓ ยี่สิบสาม, (dialectal) ซาวสาม ที่ยี่สิบสาม ยี่สิบสามเท่า
24 ๒๔ ยี่สิบสี่, (dialectal) ซาวสี่ ที่ยี่สิบสี่ ยี่สิบสี่เท่า
25 ๒๕ ยี่สิบห้า, (dialectal) ซาวห้า ที่ยี่สิบห้า ยี่สิบห้าเท่า
26 ๒๖ ยี่สิบหก, (dialectal) ซาวหก ที่ยี่สิบหก ยี่สิบหกเท่า
27 ๒๗ ยี่สิบเจ็ด, (dialectal) ซาวเจ็ด ที่ยี่สิบเจ็ด ยี่สิบเจ็ดเท่า
28 ๒๘ ยี่สิบแปด, (dialectal) ซาวแปด ที่ยี่สิบแปด ยี่สิบแปดเท่า
29 ๒๙ ยี่สิบเก้า, (dialectal) ซาวเก้า ที่ยี่สิบเก้า ยี่สิบเก้าเท่า
30 ๓๐ สามสิบ ที่สามสิบ สามสิบเท่า
31 ๓๑ สามสิบเอ็ด, (rare, military) สามสิบหนึ่ง ที่สามสิบเอ็ด สามสิบเอ็ดเท่า
32 ๓๒ สามสิบสอง ที่สามสิบสอง สามสิบสองเท่า
33 ๓๓ สามสิบสาม ที่สามสิบสาม สามสิบสามเท่า
34 ๓๔ สามสิบสี่ ที่สามสิบสี่ สามสิบสี่เท่า
35 ๓๕ สามสิบห้า ที่สามสิบห้า สามสิบห้าเท่า
36 ๓๖ สามสิบหก ที่สามสิบหก สามสิบหกเท่า
37 ๓๗ สามสิบเจ็ด ที่สามสิบเจ็ด สามสิบเจ็ดเท่า
38 ๓๘ สามสิบแปด ที่สามสิบแปด สามสิบแปดเท่า
39 ๓๙ สามสิบเก้า ที่สามสิบเก้า สามสิบเก้าเท่า
40 ๔๐ สี่สิบ ที่สี่สิบ สี่สิบเท่า
41 ๔๑ สี่สิบเอ็ด, (rare, military) สี่สิบหนึ่ง ที่สี่สิบเอ็ด สี่สิบเอ็ดเท่า
42 ๔๒ สี่สิบสอง ที่สี่สิบสอง สี่สิบสองเท่า
43 ๔๓ สี่สิบสาม ที่สี่สิบสาม สี่สิบสามเท่า
44 ๔๔ สี่สิบสี่ ที่สี่สิบสี่ สี่สิบสี่เท่า
45 ๔๕ สี่สิบห้า ที่สี่สิบห้า สี่สิบห้าเท่า
46 ๔๖ สี่สิบหก ที่สี่สิบหก สี่สิบหกเท่า
47 ๔๗ สี่สิบเจ็ด ที่สี่สิบเจ็ด สี่สิบเจ็ดเท่า
48 ๔๘ สี่สิบแปด ที่สี่สิบแปด สี่สิบแปดเท่า
49 ๔๙ สี่สิบเก้า ที่สี่สิบเก้า สี่สิบเก้าเท่า
50 ๕๐ ห้าสิบ ที่ห้าสิบ ห้าสิบเท่า
51 ๕๑ ห้าสิบเอ็ด, (rare, military) ห้าสิบหนึ่ง ที่ห้าสิบเอ็ด ห้าสิบเอ็ดเท่า
52 ๕๒ ห้าสิบสอง ที่ห้าสิบสอง ห้าสิบสองเท่า
53 ๕๓ ห้าสิบสาม ที่ห้าสิบสาม ห้าสิบสามเท่า
54 ๕๔ ห้าสิบสี่ ที่ห้าสิบสี่ ห้าสิบสี่เท่า
55 ๕๕ ห้าสิบห้า ที่ห้าสิบห้า ห้าสิบห้าเท่า
56 ๕๖ ห้าสิบหก ที่ห้าสิบหก ห้าสิบหกเท่า
57 ๕๗ ห้าสิบเจ็ด ที่ห้าสิบเจ็ด ห้าสิบเจ็ดเท่า
58 ๕๘ ห้าสิบแปด ที่ห้าสิบแปด ห้าสิบแปดเท่า
59 ๕๙ ห้าสิบเก้า ที่ห้าสิบเก้า ห้าสิบเก้าเท่า
60 ๖๐ หกสิบ ที่หกสิบ หกสิบเท่า
61 ๖๑ หกสิบเอ็ด, (rare, military) หกสิบหนึ่ง ที่หกสิบเอ็ด หกสิบเอ็ดเท่า
62 ๖๒ หกสิบสอง ที่หกสิบสอง หกสิบสองเท่า
63 ๖๓ หกสิบสาม ที่หกสิบสาม หกสิบสามเท่า
64 ๖๔ หกสิบสี่ ที่หกสิบสี่ หกสิบสี่เท่า
65 ๖๕ หกสิบห้า ที่หกสิบห้า หกสิบห้าเท่า
66 ๖๖ หกสิบหก ที่หกสิบหก หกสิบหกเท่า
67 ๖๗ หกสิบเจ็ด ที่หกสิบเจ็ด หกสิบเจ็ดเท่า
68 ๖๘ หกสิบแปด ที่หกสิบแปด หกสิบแปดเท่า
69 ๖๙ หกสิบเก้า ที่หกสิบเก้า หกสิบเก้าเท่า
70 ๗๐ เจ็ดสิบ ที่เจ็ดสิบ เจ็ดสิบเท่า
71 ๗๑ เจ็ดสิบเอ็ด, (rare, military) เจ็ดสิบหนึ่ง ที่เจ็ดสิบเอ็ด เจ็ดสิบเอ็ดเท่า
72 ๗๒ เจ็ดสิบสอง ที่เจ็ดสิบสอง เจ็ดสิบสองเท่า
73 ๗๓ เจ็ดสิบสาม ที่เจ็ดสิบสาม เจ็ดสิบสามเท่า
74 ๗๔ เจ็ดสิบสี่ ที่เจ็ดสิบสี่ เจ็ดสิบสี่เท่า
75 ๗๕ เจ็ดสิบห้า ที่เจ็ดสิบห้า เจ็ดสิบห้าเท่า
76 ๗๖ เจ็ดสิบหก ที่เจ็ดสิบหก เจ็ดสิบหกเท่า
77 ๗๗ เจ็ดสิบเจ็ด ที่เจ็ดสิบเจ็ด เจ็ดสิบเจ็ดเท่า
78 ๗๘ เจ็ดสิบแปด ที่เจ็ดสิบแปด เจ็ดสิบแปดเท่า
79 ๗๙ เจ็ดสิบเก้า ที่เจ็ดสิบเก้า เจ็ดสิบเก้าเท่า
80 ๘๐ แปดสิบ ที่แปดสิบ แปดสิบเท่า
81 ๘๑ แปดสิบเอ็ด, (rare, military) แปดสิบหนึ่ง ที่แปดสิบเอ็ด แปดสิบเอ็ดเท่า
82 ๘๒ แปดสิบสอง ที่แปดสิบสอง แปดสิบสองเท่า
83 ๘๓ แปดสิบสาม ที่แปดสิบสาม แปดสิบสามเท่า
84 ๘๔ แปดสิบสี่ ที่แปดสิบสี่ แปดสิบสี่เท่า
85 ๘๕ แปดสิบห้า ที่แปดสิบห้า แปดสิบห้าเท่า
86 ๘๖ แปดสิบหก ที่แปดสิบหก แปดสิบหกเท่า
87 ๘๗ แปดสิบเจ็ด ที่แปดสิบเจ็ด แปดสิบเจ็ดเท่า
88 ๘๘ แปดสิบแปด ที่แปดสิบแปด แปดสิบแปดเท่า
89 ๘๙ แปดสิบเก้า ที่แปดสิบเก้า แปดสิบเก้าเท่า
90 ๙๐ เก้าสิบ ที่เก้าสิบ เก้าสิบเท่า
91 ๙๑ เก้าสิบเอ็ด, (rare, military) เก้าสิบหนึ่ง ที่เก้าสิบเอ็ด เก้าสิบเอ็ดเท่า
92 ๙๒ เก้าสิบสอง ที่เก้าสิบสอง เก้าสิบสองเท่า
93 ๙๓ เก้าสิบสาม ที่เก้าสิบสาม เก้าสิบสามเท่า
94 ๙๔ เก้าสิบสี่ ที่เก้าสิบสี่ เก้าสิบสี่เท่า
95 ๙๕ เก้าสิบห้า ที่เก้าสิบห้า เก้าสิบห้าเท่า
96 ๙๖ เก้าสิบหก ที่เก้าสิบหก เก้าสิบหกเท่า
97 ๙๗ เก้าสิบเจ็ด ที่เก้าสิบเจ็ด เก้าสิบเจ็ดเท่า
98 ๙๘ เก้าสิบแปด ที่เก้าสิบแปด เก้าสิบแปดเท่า
99 ๙๙ เก้าสิบเก้า ที่เก้าสิบเก้า เก้าสิบเก้าเท่า

local export = {numbers = {}}

local numbers = export.numbers

export.numeral_config = {
	zero_codepoint = 0x0E50, -- ๐, THAI DIGIT ZERO
	thousands_separator = ",",
}

numbers[0] = {
	cardinal = "ศูนย์",
	ordinal = "[[ที่]]ศูนย์<q:rare, computing>",
	multiplier = "ศูนย์[[เท่า]]<q:rare, computing>",
}

numbers[1] = {
	cardinal = "หนึ่ง",
}

numbers[2] = {
	cardinal = "สอง",
	fractional = {"ครึ่ง", "ซีก"},
	collective = "คู่"
}

numbers[3] = {
	cardinal = "สาม",
}

numbers[4] = {
	cardinal = "สี่",
	fractional = "เสี้ยว<q:dated>",
}

numbers[5] = {
	cardinal = "ห้า",
}

numbers[6] = {
	cardinal = "หก",
	collective = "[[ครึ่ง]][[โหล]]"
}

numbers[7] = {
	cardinal = "เจ็ด",
}

numbers[8] = {
	cardinal = "แปด",
}

numbers[9] = {
	cardinal = "เก้า",
}

local tens = {"", "ยี่", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า"}
local ones = {"", "เอ็ด", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า"}

local t, o
for n = 10, 99 do
	t, o = math.floor(n / 10), n % 10
	numbers[n] = { cardinal = { tens[t] .. "สิบ" .. ones[o + 1] } }
	if o == 1 then
		table.insert(numbers[n].cardinal, tens[t] .. "สิบหนึ่ง<q:rare, military>")
	end
	if t == 2 then
		table.insert(numbers[n].cardinal, "ซาว" .. ones[o + 1] .. "<q:dialectal>")
	end
end

-- ipairs skips 0
for _, num in ipairs(numbers) do
	num.ordinal = { "[[ที่]]" .. (num.cardinal[1] or num.cardinal) }
	num.multiplier = { (num.cardinal[1] or num.cardinal) .. "[[เท่า]]" }
end

-- last adjustment
numbers[12].collective = "โหล"
--numbers[144].collective = "กุรุส"
table.insert(numbers[1].ordinal, "แรก")
table.insert(numbers[2].ordinal, "รอง")

return export