-
Notifications
You must be signed in to change notification settings - Fork 22
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
407 additions
and
0 deletions.
There are no files selected for viewing
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
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
/** | ||
* @name BAHTTEXT.js | ||
* @version 1.1.5 | ||
* @update May 1, 2017 | ||
* @website: https://github.com/earthchie/BAHTTEXT.js | ||
* @author Earthchie http://www.earthchie.com/ | ||
* @license WTFPL v.2 - http://www.wtfpl.net/ | ||
**/ | ||
export default function BAHTTEXT(num, suffix) { | ||
'use strict'; | ||
|
||
if (typeof suffix === 'undefined') { | ||
suffix = 'บาทถ้วน'; | ||
} | ||
|
||
num = num || 0; | ||
num = num.toString().replace(/[, ]/g, ''); // remove commas, spaces | ||
|
||
if (isNaN(num) || Math.round(parseFloat(num) * 100) / 100 === 0) { | ||
return 'ศูนย์บาทถ้วน'; | ||
} else { | ||
var t = ['', 'สิบ', 'ร้อย', 'พัน', 'หมื่น', 'แสน', 'ล้าน'], | ||
n = [ | ||
'', | ||
'หนึ่ง', | ||
'สอง', | ||
'สาม', | ||
'สี่', | ||
'ห้า', | ||
'หก', | ||
'เจ็ด', | ||
'แปด', | ||
'เก้า', | ||
], | ||
len, | ||
digit, | ||
text = '', | ||
parts, | ||
i; | ||
|
||
if (num.indexOf('.') > -1) { | ||
// have decimal | ||
|
||
/* | ||
* precision-hack | ||
* more accurate than parseFloat the whole number | ||
*/ | ||
|
||
parts = num.toString().split('.'); | ||
|
||
num = parts[0]; | ||
parts[1] = parseFloat('0.' + parts[1]); | ||
parts[1] = (Math.round(parts[1] * 100) / 100).toString(); // more accurate than toFixed(2) | ||
parts = parts[1].split('.'); | ||
|
||
if (parts.length > 1 && parts[1].length === 1) { | ||
parts[1] = parts[1].toString() + '0'; | ||
} | ||
|
||
num = parseInt(num, 10) + parseInt(parts[0], 10); | ||
|
||
/* | ||
* end - precision-hack | ||
*/ | ||
text = num ? BAHTTEXT(num) : ''; | ||
|
||
if (parseInt(parts[1], 10) > 0) { | ||
text = text.replace('ถ้วน', '') + BAHTTEXT(parts[1], 'สตางค์'); | ||
} | ||
|
||
return text; | ||
} else { | ||
if (num.length > 7) { | ||
// more than (or equal to) 10 millions | ||
|
||
var overflow = num.substring(0, num.length - 6); | ||
var remains = num.slice(-6); | ||
return ( | ||
BAHTTEXT(overflow).replace('บาทถ้วน', 'ล้าน') + | ||
BAHTTEXT(remains).replace('ศูนย์', '') | ||
); | ||
} else { | ||
len = num.length; | ||
for (i = 0; i < len; i = i + 1) { | ||
digit = parseInt(num.charAt(i), 10); | ||
if (digit > 0) { | ||
if ( | ||
len > 2 && | ||
i === len - 1 && | ||
digit === 1 && | ||
suffix !== 'สตางค์' | ||
) { | ||
text += 'เอ็ด' + t[len - 1 - i]; | ||
} else { | ||
text += n[digit] + t[len - 1 - i]; | ||
} | ||
} | ||
} | ||
|
||
// grammar correction | ||
text = text.replace('หนึ่งสิบ', 'สิบ'); | ||
text = text.replace('สองสิบ', 'ยี่สิบ'); | ||
text = text.replace('สิบหนึ่ง', 'สิบเอ็ด'); | ||
|
||
return text + suffix; | ||
} | ||
} | ||
} | ||
} | ||
|
||
// module.exports = BAHTTEXT; |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
export const fromExcel = (n) => { | ||
switch (n) { | ||
case -1: | ||
return 'ลบหนึ่งบาทถ้วน'; | ||
case 0: | ||
return 'ศูนย์บาทถ้วน'; | ||
case 0.01: | ||
return 'หนึ่งสตางค์'; | ||
case 0.1: | ||
return 'สิบสตางค์'; | ||
case 0.11: | ||
return 'สิบเอ็ดสตางค์'; | ||
case 0.12: | ||
return 'สิบสองสตางค์'; | ||
case 0.123: | ||
return 'สิบสองสตางค์'; | ||
case 0.2: | ||
return 'ยี่สิบสตางค์'; | ||
case 0.21: | ||
return 'ยี่สิบเอ็ดสตางค์'; | ||
case 0.25: | ||
return 'ยี่สิบห้าสตางค์'; | ||
case 0.255: | ||
return 'ยี่สิบหกสตางค์'; | ||
case 0.5: | ||
return 'ห้าสิบสตางค์'; | ||
case 0.75: | ||
return 'เจ็ดสิบห้าสตางค์'; | ||
case 0.99: | ||
return 'เก้าสิบเก้าสตางค์'; | ||
case 0.999: | ||
return 'หนึ่งบาทถ้วน'; | ||
case 1: | ||
return 'หนึ่งบาทถ้วน'; | ||
case 10: | ||
return 'สิบบาทถ้วน'; | ||
case 11: | ||
return 'สิบเอ็ดบาทถ้วน'; | ||
case 11.25: | ||
return 'สิบเอ็ดบาทยี่สิบห้าสตางค์'; | ||
case 12: | ||
return 'สิบสองบาทถ้วน'; | ||
case 20: | ||
return 'ยี่สิบบาทถ้วน'; | ||
case 21: | ||
return 'ยี่สิบเอ็ดบาทถ้วน'; | ||
case 22: | ||
return 'ยี่สิบสองบาทถ้วน'; | ||
case 100: | ||
return 'หนึ่งร้อยบาทถ้วน'; | ||
case 100.5: | ||
return 'หนึ่งร้อยบาทห้าสิบสตางค์'; | ||
case 101: | ||
return 'หนึ่งร้อยหนึ่งบาทถ้วน'; | ||
case 111: | ||
return 'หนึ่งร้อยสิบเอ็ดบาทถ้วน'; | ||
case 121: | ||
return 'หนึ่งร้อยยี่สิบเอ็ดบาทถ้วน'; | ||
case 567.01: | ||
return 'ห้าร้อยหกสิบเจ็ดบาทหนึ่งสตางค์'; | ||
case 1000000: | ||
return 'หนึ่งล้านบาทถ้วน'; | ||
case 1000001: | ||
return 'หนึ่งล้านหนึ่งบาทถ้วน'; | ||
case 6321298: | ||
return 'หกล้านสามแสนสองหมื่นหนึ่งพันสองร้อยเก้าสิบแปดบาทถ้วน'; | ||
case 10000000: | ||
return 'สิบล้านบาทถ้วน'; | ||
case 10034567: | ||
return 'สิบล้านสามหมื่นสี่พันห้าร้อยหกสิบเจ็ดบาทถ้วน'; | ||
case 11000000: | ||
return 'สิบเอ็ดล้านบาทถ้วน'; | ||
case 11000001: | ||
return 'สิบเอ็ดล้านหนึ่งบาทถ้วน'; | ||
case 20034567: | ||
return 'ยี่สิบล้านสามหมื่นสี่พันห้าร้อยหกสิบเจ็ดบาทถ้วน'; | ||
case 30034567.0: | ||
return 'สามสิบล้านสามหมื่นสี่พันห้าร้อยหกสิบเจ็ดบาทถ้วน'; | ||
case 100000000: | ||
return 'หนึ่งร้อยล้านบาทถ้วน'; | ||
case 123456789.999: | ||
return 'หนึ่งร้อยยี่สิบสามล้านสี่แสนห้าหมื่นหกพันเจ็ดร้อยเก้าสิบบาทถ้วน'; | ||
case 1000000000: | ||
return 'หนึ่งพันล้านบาทถ้วน'; | ||
case 1000000000000: | ||
return 'หนึ่งล้านล้านบาทถ้วน'; | ||
case 1000000000001: | ||
return 'หนึ่งล้านล้านหนึ่งบาทถ้วน'; | ||
case 1001000000000: | ||
return 'หนึ่งล้านหนึ่งพันล้านบาทถ้วน'; | ||
case 1001000000001: | ||
return 'หนึ่งล้านหนึ่งพันล้านหนึ่งบาทถ้วน'; | ||
case 1001000001001: | ||
return 'หนึ่งล้านหนึ่งพันล้านหนึ่งพันหนึ่งบาทถ้วน'; | ||
case 123456789012345: | ||
return 'หนึ่งร้อยยี่สิบสามล้านสี่แสนห้าหมื่นหกพันเจ็ดร้อยแปดสิบเก้าล้านหนึ่งหมื่นสองพันสามร้อยสี่สิบห้าบาทถ้วน'; | ||
case 987654321098765: | ||
return 'เก้าร้อยแปดสิบเจ็ดล้านหกแสนห้าหมื่นสี่พันสามร้อยยี่สิบเอ็ดล้านเก้าหมื่นแปดพันเจ็ดร้อยหกสิบห้าบาทถ้วน'; | ||
case 9007199254740990: | ||
return 'เก้าพันเจ็ดล้านหนึ่งแสนเก้าหมื่นเก้าพันสองร้อยห้าสิบสี่ล้านเจ็ดแสนสี่หมื่นเก้าร้อยเก้าสิบบาทถ้วน'; | ||
default: | ||
return 'Undefined number: ' + n; | ||
} | ||
}; |
Oops, something went wrong.