Main()
Start
Request and store number, base and desired_base
If the number and base are valid
Then
ConvertToBase10()
ConvertToDesiredBase()
Display result
Go to Start
Else
Display error message
Go to Start
Stop
Validate()
Start
Checks every entry by user, to affirm user enter correct digits for base to be converted.
If failed validated test relevant error message displayed.
If passed validated test, program converts to desire base.
Stop
ConvertToBase10()
Start
Decipher where the decimal point is located
Locate nth number and assigned n -1 power to the store base(converting from)
Digits after the decimal point is multiply by the store base raised to 1 upon the product.
Multiply each digit by the calculated base to the n-1 power
Store the summation of products in variable
Return the result
Stop
ConvertToDesiredBase()
Start
Collects the value store in summation of products variable.
Divides that number by the desired base
Store the remainder by appending to previous remainder
Repeat Steps 2 to 4 until n = 0.
If number has a decimal point
Then
Else
Continue
Return the result.
Stop
function calculate(){ var number = $("#number").val(); var inputbase = parseInt($("#inputbase").val()); var outputbase = parseInt($("#outputbase").val()); if(validate(number, inputbase)){ $("#outputnumber").val( convert(number, inputbase, outputbase) ); } else { alert ("Invalid base "+inputbase+" number"); } }
function validate(number, inputbase){ if (number.split(".").length-1 <= 1 ) { switch (inputbase){ case BINARY : return (number.match(/^[0-1.]+$/)) ? true : false; break; case OCTAL : return (number.match(/^[0-7.]+$/)) ? true : false; break; case DECIMAL: return (number.match(/^[0-9.]+$/)) ? true : false; break; case HEX : return (number.match(/^[a-fA-F0-9.]+$/)) ? true : false; break; default : alert("Ain't nobody got time fo base " +inputbase); break; } } }
function convertToDecimal(n, b){ var result = 0, value; var power = ((n.indexOf('.')>0) ? n.indexOf('.') : n.length )-1; for(x in n.toString()){ switch(n[x].toUpperCase()) { case 'A' : value = 10; break; case 'B' : value = 11; break; case 'C' : value = 12; break; case 'D' : value = 13; break; case 'E' : value = 14; break; case 'F' : value = 15; break; default : value = n[x]; } if(n[x] != '.'){ result += value * Math.pow(b,power--); } } return parseFloat(result); }
function convertFromDecimal(n, b){ var result = remainder = ""; var fraction = parseFloat("0."+(n.toString()).split(".")[1]); while (n > 0){ remainder = (parseInt(n) % b); switch (remainder){ case 10 : result = "A" + result; break; case 11 : result = "B" + result; break; case 12 : result = "C" + result; break; case 13 : result = "D" + result; break; case 14 : result = "E" + result; break; case 15 : result = "F" + result; break; default : result = remainder + result; } n = parseInt( n / b ); } if (fraction > 0) {result += ".";} while (fraction > 0){ fraction *= b; switch (result){ case 10 : result += "A"; break; case 11 : result += "B"; break; case 12 : result += "C"; break; case 13 : result += "D"; break; case 14 : result += "E"; break; case 15 : result += "F"; break; default : result += parseInt(fraction); } fraction -= parseInt(fraction); } return result; }