# What are the differences and similarities of parsefloat() and parseint()?

• 05-02-2012, 04:38 AM
Taro
What are the differences and similarities of parsefloat() and parseint()?
Hello,

As a novice, I'm not sure which one to use though. I'm trying to do a calculation with numbers in JavaScript using variables, particularly adding variables. Any guided understanding of this concept is welcome.
For example:
Code:

```n = parseint(n) document.write(n += m)```
• 05-02-2012, 07:49 AM
Philip M
As its name implies, parseInt() parses a string value and returns an integer. Syntax:- parseInt(string, radix)
If the radix parameter is omitted, JavaScript assumes the following:
- If the string begins with "0x", the radix is 16 (hexadecimal)
- If the string begins with "0", the radix is 8 (octal). This feature is deprecated
- If the string begins with any other value, the radix is 10 (decimal)

parseFloat() returns the real (decimal or floating point) value of the number parsed from a string value. If the first character in the string is a number, it parses the string until it reaches the end of the number, and returns the number as a number, not as a string.

You should also take a look at the Number() function.

Note that as always Javascript is case-sensitive and parseint will return an error.

"We have to remember that horses are only human ...." - Racing commentator
• 05-02-2012, 07:59 AM
Dormilich
note: although parseInt() parses the input as Integer, the number returned is a float* (because float (IEEE 754 double) is the only datatype for numbers in JavaScript)

* - might be important for large integers
• 05-02-2012, 09:40 AM
felgall
parseFloat() handles very small numbers and very big numbers
- eg parseFloat('1e100') returns the same number (1 googol - 1 followed by a hundred 0) as
Math.pow(10,100) but without having to calculate what 10 to the 100th power is.

parseInt() handles number bases between 2 and 36 to convert numbers to base 10
- for example parseInt('100',2) returns 4 and parseInt('ff',16) returns 255 and parseInt('z',36) returns 35.

As a side effect both drop any characters from the end that are not numbers
- eg parseInt('39',8) will return 3 and ignore the 9
This side effect is useful when processing style related numbers eg. parseInt('250px',10) returns 250.

If you just want to convert a string to a number without the number being very big/small or in a different number base then Number() is the function to use as it just handles regular numbers without all the extra overheads needed to handle numbers such as '1.35e-25' and '0xffaa'
- for example Number('120') returns 120.
• 05-02-2012, 08:59 PM
Taro
I am grateful for the thorough replies.

Quote:

Originally Posted by Philip M
As its name implies, parseInt() parses a string value and returns an integer. Syntax:- parseInt(string, radix)
If the radix parameter is omitted, JavaScript assumes the following:
- If the string begins with "0x", the radix is 16 (hexadecimal)
- If the string begins with "0", the radix is 8 (octal). This feature is deprecated
- If the string begins with any other value, the radix is 10 (decimal)

parseFloat() returns the real (decimal or floating point) value of the number parsed from a string value. If the first character in the string is a number, it parses the string until it reaches the end of the number, and returns the number as a number, not as a string.

You should also take a look at the Number() function.

Note that as always Javascript is case-sensitive and parseint will return an error.

"We have to remember that horses are only human ...." - Racing commentator

Well, I did get an error in the function I was writing, and forget to make the 'F' or 'I' upper case. Sometimes I try to figure out what was wrong with the code, after looking at the misguided JavaScript errors from the HTML-Kit software I was using.

Quote:

Originally Posted by Dormilich
note: although parseInt() parses the input as Integer, the number returned is a float* (because float (IEEE 754 double) is the only datatype for numbers in JavaScript)

* - might be important for large integers

Good to know.

Quote:

Originally Posted by felgall
parseFloat() handles very small numbers and very big numbers
- eg parseFloat('1e100') returns the same number (1 googol - 1 followed by a hundred 0) as
Math.pow(10,100) but without having to calculate what 10 to the 100th power is.

parseInt() handles number bases between 2 and 36 to convert numbers to base 10
- for example parseInt('100',2) returns 4 and parseInt('ff',16) returns 255 and parseInt('z',36) returns 35.

As a side effect both drop any characters from the end that are not numbers
- eg parseInt('39',8) will return 3 and ignore the 9
This side effect is useful when processing style related numbers eg. parseInt('250px',10) returns 250.

If you just want to convert a string to a number without the number being very big/small or in a different number base then Number() is the function to use as it just handles regular numbers without all the extra overheads needed to handle numbers such as '1.35e-25' and '0xffaa'
- for example Number('120') returns 120.

I did not realize that there is so much to JavaScript functions, like the parseInt('39',8), rather than just putting a single value. I do find the Number() function very simple to use.
• 05-02-2012, 10:18 PM
felgall
Quote:

Originally Posted by Taro
like the parseInt('39',8), rather than just putting a single value.

You need to specify two parameters when calling parseInt as otherwhise it tries to guess the number base from the content - as Philip mentioned in his earlier post. By specifying the base in the second parameter you avoid the number being misinterpreted.

A common error is people using parseInt to convert a day or month string into a number instead of simply using Number(). Where the day or month is '08' or '09' then some browsers will assume the leading zero makes the number octal rather than decimal and since in base 8 you count 01, 02, 03, 04, 05, 06, 07, 010, 011 and there are no such numbers as 8 and 9 the person who wrote the code is left wondering why they are getting 0 when they expected 8 or 9. Specifying the second parameter as 10 resolves it - althougfh simply substituting Number() is an even more efficient resolution.

parseInt('39',8) is an example of the side effect that parseInt and parseFloat have where any non-numeric portion on the right of the number is simply discarded. In this example the returned value is 3 and the 9 is discarded since 9 is not a number in octal - just as with parseInt('08') the value returned might be zero if the browser interprets the leading zero as an indicator that the number is octal (not all browsers treat a leading 0 as octal so the result returned could be either 0 or 8 depending on the browser - there are even some browsers that would return 8 if you are using strict JavaScript and 0 if you didn't specify "use strict")..
• 05-03-2012, 08:20 AM
Philip M
In short, if you do use parseInt(), you must always specify the radix (normally 10).

Number() is normally the best choice.