How to convert string to float if it is an exact number, not only start with number in javascript

Viewed 441

I'm trying to make function that check strings. If the string is number, then it will convert it as float. else, it will keep it as it is.

For example: I have these test strings:

"123" => 123
"12.3" => 12.3
"12.300" => 12.3
"test123" => "test123"
"123test" => "123test"
"12.3test" => "12.3test"
"123@123.123" => "123@123.123"

I tried to make it by self as written bellow but sometime it convert real strings to numbers by remove the letters and keep the first part of string numbers

let mynumber="123test@gmail.com"
mynumber = parseFloat(mynumber) ? parseFloat(mynumber) : mynumber;
//output: 123
4 Answers

You could convert your string to a number with Number() and also check if its NaN.

function check(num){
   return isNaN(Number(num)) ? num : Number(num);
}

let mynumber="123test@gmail.com"
let mynumber2 = "34234";
let mynumber3 = "3234.234";

let result = check(mynumber);
let result2 = check(mynumber2);
let result3 = check(mynumber3);


console.log(result, typeof result);
console.log(result2, typeof result2);
console.log(result3, typeof result3);

Change your code to like below

let mynumber="123test@gmail.com"
mynumber = isNaN(mynumber)?mynumber:parseFloat(mynumber)

here isNaN will check for valid number

You can use isNan which checks if the argument is NaN or not.

let mynumber="123test@gmail.com"
 isNaN(mynumber)
//output: true


let mynumber="123.123"
 isNaN(mynumber)
//output: false

Simply add + symbol before any string, it will convert it to number.

var a = "10.25";

console.log( +a );


Output: 10.25

Related