Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- String.format = function () {
- var formattedString = arguments[0];
- for (var index = 0; index < arguments.length - 1; index++) {
- var regex = new RegExp("\\{" + index + "\\}", "gm");
- formattedString = formattedString.replace(regex, arguments[index + 1]);
- }
- return formattedString;
- };
- var validateNumber = function (input) {
- var number = new Object();
- number.error = false;
- // In these two cases parseFloat returns MAX_INT and MIN_INT respectively, which is not expected behaviour.
- if (input != "9007199254740993" && input != "-9007199254740993") {
- number.value = parseFloat(input);
- if (isNaN(number.value)) {
- number.error = true;
- number.message = "\x27" + input + "\x27 is not a number.";
- }
- }
- else {
- number.value = input;
- number.error = true;
- number.message = input + " cannot be represented exactly with double- precision arithmetic.";
- }
- return number;
- };
- var validateInteger = function (input) {
- var number = validateNumber(input);
- if (!number.error) {
- if (number.value - Math.floor(number.value) != 0) {
- number.error = true;
- number.message = input + " is not an integer.";
- }
- else if (number.value > Number.MAX_INT || number.value < Number.MIN_INT) {
- number.error = true;
- number.message = String.format("Integer overflow. Integers must lie in the range [{0}, {1}].", Number.MIN_INT, Number.MAX_INT);
- }
- }
- return number;
- };
- // Rounds input to decimals decimal places. The built- in function only rounds integers and the function
- // for fixed decimal places always puts zeroes at the end of the number to fill up to the fixed position.
- // This version works much like the string format #.### where numbers are shown without the zeroes at the end
- var round = function (input, decimals) {
- // Constants
- var MIN_DECIMAL_PLACES = 0;
- var MAX_DECIMAL_PLACES = 308;
- var number = new Object();
- number.value = input;
- number.error = false;
- if (decimals < MIN_DECIMAL_PLACES || decimals > MAX_DECIMAL_PLACES) {
- number.error = true;
- number.message = String.format("Cannot round to {0} decimal places. Restrictions are [{1}, {2}].", decimals, MIN_DECIMAL_PLACES, MAX_DECIMAL_PLACES);
- }
- else {
- var power = 1;
- for (var iterations = 0; iterations < decimals; iterations++) {
- power *= 10;
- }
- if (number.value * power >= Number.MAX_VALUE) {
- number.error = true;
- number.message = "Overflow. Choose a lower value for decimal places.";
- }
- else {
- number.value = Math.round(number.value * power) / power;
- }
- }
- return number;
- };
- /*var clearScreen = function () {
- document.body.innerHTML = String.empty;
- }*/
- // Useful constants that should have been built- in
- String.empty = "";
- Number.MAX_INT = Math.pow(2, 53);
- Number.MIN_INT = -Number.MAX_INT;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement