Reputation: 17042
How can we convert a JavaScript string variable to decimal?
Is there a function such as:
parseInt(document.getElementById(amtid4).innerHTML)
Upvotes: 140
Views: 415411
Reputation: 25284
I made a little helper function to do this and catch all malformed data
const convertToPounds = (str = "", asNumber = false) => {
let num = Number.parseFloat(str);
if (isNaN(num) || num < 0) num = 0;
if (asNumber) return Math.round(num * 1e2) / 1e2
return num.toFixed(2);
};
Demo is here
Upvotes: 2
Reputation: 9611
Prefix +
could be used to convert a string form of a number to a number (say "009" to 9)
const myNum = +"009"; // 9
But be careful
if you want to SUM
2 or more number strings into one number.
const myNum = "001" + "009"; // "001009" (NOT 10)
const myNum = +"001" + +"009"; // 10
Alternatively you can do
const myNum = Number("001") + Number("009"); // 10
Upvotes: 0
Reputation: 237845
Yes -- parseFloat
.
parseFloat(document.getElementById(amtid4).innerHTML);
For formatting numbers, use toFixed
:
var num = parseFloat(document.getElementById(amtid4).innerHTML).toFixed(2);
num
is now a string with the number formatted with two decimal places.
Upvotes: 288
Reputation: 122906
You can also use the Number
constructor/function (no need for a radix and usable for both integers and floats):
Number('09'); /=> 9
Number('09.0987'); /=> 9.0987
Alternatively like Andy E said in the comments you can use +
for conversion
+'09'; /=> 9
+'09.0987'; /=> 9.0987
Upvotes: 78
Reputation: 300
It is fairly risky to rely on javascript functions to compare and play with numbers. In javascript (0.1+0.2 == 0.3) will return false due to rounding errors. Use the math.js library.
Upvotes: 2
Reputation: 11177
var formatter = new Intl.NumberFormat("ru", {
style: "currency",
currency: "GBP"
});
alert( formatter.format(1234.5) ); // 1 234,5 £
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat
Upvotes: 19
Reputation: 489
An easy short hand way would be to use +x It keeps the sign intact as well as the decimal numbers. The other alternative is to use parseFloat(x). Difference between parseFloat(x) and +x is for a blank string +x returns 0 where as parseFloat(x) returns NaN.
Upvotes: 2
Reputation: 141
This works:
var num = parseFloat(document.getElementById(amtid4).innerHTML, 10).toFixed(2);
Upvotes: 14