const ones = [”,’หนึ่ง’,’สอง’,’สาม’,’สี่’,’ห้า’,’หก’,’เจ็ด’,’แปด’,’เก้า’];
const tens = [”,’สิบ’,’ยี่สิบ’,’สามสิบ’,’สี่สิบ’,’ห้าสิบ’,
‘หกสิบ’,’เจ็ดสิบ’,’แปดสิบ’,’เก้าสิบ’];
function belowMillion(n) {
if (n === 0) return ”;
let r = ”;
const saen = Math.floor(n / 100000);
const muen = Math.floor((n % 100000) / 10000);
const phan = Math.floor((n % 10000) / 1000);
const roi = Math.floor((n % 1000) / 100);
const sib = Math.floor((n % 100) / 10);
const nueng = n % 10;
if (saen) r += ones[saen] + ‘แสน’;
if (muen) r += ones[muen] + ‘หมื่น’;
if (phan) r += ones[phan] + ‘พัน’;
if (roi) r += ones[roi] + ‘ร้อย’;
if (sib === 1) r += ‘สิบ’;
else if (sib > 1) r += tens[sib];
if (nueng === 1 && sib !== 0) r += ‘เอ็ด’;
else if (nueng > 0) r += ones[nueng];
return r;
}
function numToThai(n) {
if (n === 0) return ‘ศูนย์’;
const million = Math.floor(n / 1000000);
const rest = n % 1000000;
let result = ”;
if (million) result += belowMillion(million) + ‘ล้าน’;
result += belowMillion(rest);
return result;
}
function bahtText(val) {
const intPart = Math.floor(val);
const decPart = Math.round((val – intPart) * 100);
let text = numToThai(intPart) + ‘บาท’;
text += decPart > 0 ? numToThai(decPart) + ‘สตางค์’ : ‘ถ้วน’;
return text;
}
// ตัวอย่างใช้งาน
console.log(bahtText(12000)); // หนึ่งหมื่นสองพันบาทถ้วน
console.log(bahtText(1234567)); // หนึ่งล้านสองแสนสามหมื่นสี่พันห้าร้อยหกสิบเจ็ดบาทถ้วน
console.log(bahtText(1500.50)); // หนึ่งพันห้าร้อยบาทห้าสิบสตางค์