Number to String Converter
Simply converts integers (up to 45-digits long) into their proper, written format. Accepts negative numbers and commas in the input.
HTML
<table id="page-content">
<tr>
<td colspan="2">
Enter your number:
</td>
</tr>
<tr>
<td id="input-td">
<input id="input" type="text" />
</td>
<td id="button-td">
<button id="convert-btn">Convert to String</button>
</td>
</tr>
<tr>
<td colspan="2" id="output"></td>
</tr>
</table>
CSS
html, body {
font-family: Helvetica, Arial, sans-serif;
}
#input, #convert-btn {
width: 100%;
font-size: 18px;
}
#page-content {
width: 800px;
margin: auto;
}
#page-content td {
padding: 3px 10px;
}
#input-td {
width:70%;
}
#button-td {
width:30%;
}
@media (max-width: 800px) {
#page-content {
width: 100%;
}
#input-td {
width:60%;
}
#button-td {
width:40%;
}
}
JavaScript
var $input, $output, $convertBtn;
var writtenNum;
function main() {
$input = $("#input");
$output = $("#output");
$convertBtn = $("#convert-btn");
writtenNum = {};
// $input.bind("input", updateOutput);
$convertBtn.click(function(){
updateOutput();
});
// Initialize demo
$input.val("-12,758,174,013");
updateOutput();
}
function updateOutput() {
try {
writtenNum = new WrittenNumber($input.val().trim());
$output.text(writtenNum.toString());
} catch (ex) {
if ($input.val().trim() === '') $output.text("");
else $output.text(ex);
}
}
function WrittenNumber(numStr) {
if (numStr === "" || typeof numStr === "undefined") throw "ERROR: No number was provided. Please provide a valid integer.";
var str = numStr;
var validChars = ['0','1','2','3','4','5','6','7','8','9',','];
var teenStrs = ["ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"];
var numStrs = ["", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
var tenStrs = ["", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"];
var magnitudes = ["", "thousand", "million", "billion", "trillion", "quadrillion", "quintillion", "sextillion", "septillion", "octillion", "nonillion", "decillion", "undecillion", "duodecillion", "tredecillion"];
var numChunks = [];
var textValue = "";
var _self = this;
this.isNegative = false;
// Verify the string is a valid integer, else throw an error
var num = parseInt(numStr);
for (var i = 0; i < numStr.length; i++) {
if (i === 0 && numStr[i] === '-') {
continue;
}
if (validChars.indexOf(numStr[i]) < 0) {
throw "ERROR: A valid integer was expected. '" + numStr + "' provided.";
}
}
// Remove the commas from the number string
numStr = numStr.split(',').join('');
// set this.isNegative and then remove the negative sign from the number string
this.isNegative = num <...