I'm Learning Javascript.
What does it mean to have parseFloat & parseInt functions in javascript, when in fact, Javascript does not differentiate between float and integer--there is only the Numeric data type.
Seems like they should have created parseNumber to be in alignment with their data types.
Any comments? Maybe somebody knows the reason. It just seems very odd.
parseInt("1.0") will be same as parseInt("1.1")
parseFloat("1.0") will be different to parseFloat("1.1")
In JS, there exist Number not parseNumber - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number. It works with numeric value, no matter whether it's float or int.
parseInt or parseFloat are generally used to parse string to number.
In decimal number i:e 10.3 the parseInt only return the number before decimal and discard everything after it, whereas with parseFloat it does consider the digits after decimal.
const num = 10.3;
console.log(parseInt(num));
console.log(parseFloat(num));
These functions are basically to parse string data to the relative format so according to the conditions we can use them
The parseInt() function parses a string argument and returns an integer of the specified radix (the base in mathematical numeral systems).
The parseFloat() function parses an argument and returns a floating point number.
console.log(parseInt("1.11"))
console.log(parseFloat("1.11"))
parseFloat() and parseInt() is javascript functions which is basically use to convert string into Float or Integer number
var a = parseInt("10");
var b = parseInt("10.00");
var c = parseInt("10.33");
var d = parseInt("34 45 66");
var e = parseInt(" 60 ");
var f = parseInt("40 years");
var g = parseInt("He was 40");
var h = parseFloat("10");
var i = parseFloat("10.00");
var j = parseFloat("34 45 66");
var k = parseFloat("10.33");
var l = parseFloat(" 60 ");
var m = parseFloat("40 years");
var n = parseFloat("He was 40");
console.log("a : " + a);
console.log("b : " + b);
console.log("c : " + c);
console.log("d : " + d);
console.log("e : " + e);
console.log("f : " + f);
console.log("g : " + g);
console.log("h : " + h);
console.log("i : " + i);
console.log("j : " + j);
console.log("k : " + k);
console.log("l : " + l);
console.log("m : " + m);
console.log("n : " + n);
I am a newbie on regular expression.
Could anybody suggest a regex to split string like below using Javascript?
The text I am dealing with should be split by a space character but sometimes it contains space within the text snippet like below:
Input:
SST+CONF!001 001 "407968017" "Projector Serial Number"
Desired output:
['SST+CONF!001', '001', '407968017', 'Projector Serial Number']
Please help!
Thank you!
This is longer than a one liner regex, but it converts the input to the format of the desired output you are looking for using split and regex:
var yourstring = 'SST+CONF!001 001 "407968017" "Projector Serial Number"';
// Regex to replace " with '
yourstring = yourstring.replace (/"/g,"'");
// Split where " " is
strArray = yourstring.split(" ");
var output = "[";
for (var i = 0; i < strArray.length; i++) {
if(i < 2){
strArray[i] = "'" + strArray[i] + "'";
}
if (i < 3){
output += strArray[i] + ", ";
}
else {
output += strArray[i] + " ";
}
}
// Regex to replace last character with ]
output = output.replace(/.$/, "]");
console.log(output);
Hope it helps!
Use the split function and use the regex provided inside it. It splits the array based on the regex. The regex finds all the space in the string
var a='SST+CONF!001 001 407968017 Projector Serial Number';
var b=a.split(/\s/g)
console.log(b)
This question already has answers here:
Plus Arithmetic Operation
(7 answers)
Closed 8 years ago.
I am trying to add up the 2 values (bold) that are inputed by the user but instead of adding then mathematically (100+1 = 101) it adds them like this (100+1 = 1001).
$('#inputcost').keyup(function(){
var price = $(this).val();
});
function checkboxcost() {
var sum = 0;
var gn, elem;
for (i=0; i<2; i++) {
gn = 'extra'+i;
elem = document.getElementById(gn);
if (elem.checked == true) { sum += Number(elem.value); }
}
**var total = (price.value + sum.toFixed(2));
document.getElementById('totalcost').value = "$" + total;**
}
</script>
<input id="totalcost" disabled/>
The problem is, as you suspect, in this line:
var total = (price.value + sum.toFixed(2));
The problem is that .toFixed converts the number to a string for display. So you are trying to add a string to a number, which results in concatenation, not addition.
You want to add the numbers together, then display the sum:
var total = (price.value + sum).toFixed(2);
With that said, I'm not sure where price.value is coming from, so it's possible that's a string too. In which case, convert it with the unary plus + operator:
var total = (+price.value + sum).toFixed(2);
Its treating price.value as String so convert that string to number like:
var total = (Number(price.value) + sum.toFixed(2));
it seems string addition is taking place.
So try converting string numbers to integer using parseInt() like:
var x = parseInt("1")
var y = parseInt("2")
var z = x + y
Try parseInt(price.value) + ...
It's because the types of the operands are strings and the + operator for two strings does concatenation, not addition.
If you convert them to numbers then you'll get a number result:
"1" + "2" == "12"
parseFloat("1") + parseFloat("2") == 3
I have this code that add numbers and prints it in input text for readonly
document.getElementById('total') += parseInt(tot);
but it JUST adds numbers as sting , for example when add 8 and 10 that would be 18 but it prints them as 810 , why ?
Use the parseInt() function to both of them:
document.getElementById('total').value = parseInt(tot)+parteInt(document.getElementById('total').value);
Just parse the value from string to integer like this
var x = document.getElementById('total');
x.value = parseInt(x.value) + parseInt(tot);
Or use parseFloat() if you have decimal numbers.
You can try this:
var elem = document.getElementById('total');
elem.value = +elem.value + parseInt(tot);
The + sign force the type to number.
Suggest solution for removing or truncating leading zeros from number(any string) by javascript,jquery.
You can use a regular expression that matches zeroes at the beginning of the string:
s = s.replace(/^0+/, '');
I would use the Number() function:
var str = "00001";
str = Number(str).toString();
>> "1"
Or I would multiply my string by 1
var str = "00000000002346301625363";
str = (str * 1).toString();
>> "2346301625363"
Maybe a little late, but I want to add my 2 cents.
if your string ALWAYS represents a number, with possible leading zeros, you can simply cast the string to a number by using the '+' operator.
e.g.
x= "00005";
alert(typeof x); //"string"
alert(x);// "00005"
x = +x ; //or x= +"00005"; //do NOT confuse with x+=x, which will only concatenate the value
alert(typeof x); //number , voila!
alert(x); // 5 (as number)
if your string doesn't represent a number and you only need to remove the 0's use the other solutions, but if you only need them as number, this is the shortest way.
and FYI you can do the opposite, force numbers to act as strings if you concatenate an empty string to them, like:
x = 5;
alert(typeof x); //number
x = x+"";
alert(typeof x); //string
hope it helps somebody
Since you said "any string", I'm assuming this is a string you want to handle, too.
"00012 34 0000432 0035"
So, regex is the way to go:
var trimmed = s.replace(/\b0+/g, "");
And this will prevent loss of a "000000" value.
var trimmed = s.replace(/\b(0(?!\b))+/g, "")
You can see a working example here
parseInt(value) or parseFloat(value)
This will work nicely.
I got this solution for truncating leading zeros(number or any string) in javascript:
<script language="JavaScript" type="text/javascript">
<!--
function trimNumber(s) {
while (s.substr(0,1) == '0' && s.length>1) { s = s.substr(1,9999); }
return s;
}
var s1 = '00123';
var s2 = '000assa';
var s3 = 'assa34300';
var s4 = 'ssa';
var s5 = '121212000';
alert(s1 + '=' + trimNumber(s1));
alert(s2 + '=' + trimNumber(s2));
alert(s3 + '=' + trimNumber(s3));
alert(s4 + '=' + trimNumber(s4));
alert(s5 + '=' + trimNumber(s5));
// end hiding contents -->
</script>
Simply try to multiply by one as following:
"00123" * 1; // Get as number
"00123" * 1 + ""; // Get as string
1. The most explicit is to use parseInt():
parseInt(number, 10)
2. Another way is to use the + unary operator:
+number
3. You can also go the regular expression route, like this:
number.replace(/^0+/, '')
Try this,
function ltrim(str, chars) {
chars = chars || "\\s";
return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
var str =ltrim("01545878","0");
More here
You should use the "radix" parameter of the "parseInt" function :
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FparseInt
parseInt('015', 10) => 15
if you don't use it, some javascript engine might use it as an octal
parseInt('015') => 0
If number is int use
"" + parseInt(str)
If the number is float use
"" + parseFloat(str)
const number = '0000007457841';
console.log(+number) //7457841;
OR number.replace(/^0+/, '')
Regex solution from Guffa, but leaving at least one character
"123".replace(/^0*(.+)/, '$1'); // 123
"012".replace(/^0*(.+)/, '$1'); // 12
"000".replace(/^0*(.+)/, '$1'); // 0
I wanted to remove all leading zeros for every sequence of digits in a string and to return 0 if the digit value equals to zero.
And I ended up doing so:
str = str.replace(/(0{1,}\d+)/, "removeLeadingZeros('$1')")
function removeLeadingZeros(string) {
if (string.length == 1) return string
if (string == 0) return 0
string = string.replace(/^0{1,}/, '');
return string
}
One another way without regex:
function trimLeadingZerosSubstr(str) {
var xLastChr = str.length - 1, xChrIdx = 0;
while (str[xChrIdx] === "0" && xChrIdx < xLastChr) {
xChrIdx++;
}
return xChrIdx > 0 ? str.substr(xChrIdx) : str;
}
With short string it will be more faster than regex (jsperf)
const input = '0093';
const match = input.match(/^(0+)(\d+)$/);
const result = match && match[2] || input;
Use "Math.abs"
eg: Math.abs(003) = 3;
console.log(Math.abs(003))