Search code examples
javascriptparseintparsefloat

Convert string to either integer or float in javascript


Is there a straightforward way to parse a string to either integer or float if I don't know if the variable is integer-number-like or decimal-number-like?

a = '2'; // => parse to integer
b = '2.1'; // => parse to float
c = '2.0'; // => parse to float
d = 'text'; // => don't parse

EDIT: It seems my question lacked the necessary context: I want to do some calculations without losing the original format (Original format thereby means integer vs. float. I don't care about the original number of decimal places):

Example:

String containing the formatted number ('2') => parse to number (2.0) => do some calculations (2.0 + 1 = 3.0) => restore "original format" ('3' and not '3.0')

If the input was 2.0 instead, the wanted result would be '3.0' (not '3').


Solution

  • That's how I finally solved it. I didn't find any other solution than to add the variable type to the variable ...

    var obj = {
    	a: '2',
    	b: '2.1',
    	c: '2.0',
    	d: 'text'
    };
    // Explicitly remember the variable type
    for (key in obj) {
      var value = obj[key], type;
      if ( isNaN(value) || value === "" ) {
        type = "string";
      }
      else {
        if (value.indexOf(".") === -1) {
          type = "integer";
        }
        else {
          type = "float";
        }
        value = +value; // Convert string to number
      }
      obj[key] = {
        value: value,
        type: type
      };
    }
    document.write("<pre>" + JSON.stringify(obj, 0, 4) + "</pre>");