Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 7 of 7
  1. #1
    Regular Coder Taro's Avatar
    Join Date
    Oct 2011
    Location
    Geraldton, Ontario
    Posts
    155
    Thanks
    1
    Thanked 1 Time in 1 Post

    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)
    Element ID

    Webs Support Helper

    Your friendly neighborhood Taroman.

  • #2
    Supreme Master coder! Philip M's Avatar
    Join Date
    Jun 2002
    Location
    London, England
    Posts
    17,918
    Thanks
    203
    Thanked 2,531 Times in 2,509 Posts
    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

    All the code given in this post has been tested and is intended to address the question asked.
    Unless stated otherwise it is not just a demonstration.

  • #3
    Senior Coder Dormilich's Avatar
    Join Date
    Jan 2010
    Location
    Behind the Wall
    Posts
    3,251
    Thanks
    12
    Thanked 340 Times in 336 Posts
    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
    The computer is always right. The computer is always right. The computer is always right. Take it from someone who has programmed for over ten years: not once has the computational mechanism of the machine malfunctioned.
    André Behrens, NY Times Software Developer

  • #4
    Master Coder felgall's Avatar
    Join Date
    Sep 2005
    Location
    Sydney, Australia
    Posts
    6,622
    Thanks
    0
    Thanked 645 Times in 635 Posts
    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.
    Last edited by felgall; 05-02-2012 at 09:57 AM.
    Stephen
    Learn Modern JavaScript - http://javascriptexample.net/
    Helping others to solve their computer problem at http://www.felgall.com/

    Don't forget to start your JavaScript code with "use strict"; which makes it easier to find errors in your code.

  • #5
    Regular Coder Taro's Avatar
    Join Date
    Oct 2011
    Location
    Geraldton, Ontario
    Posts
    155
    Thanks
    1
    Thanked 1 Time in 1 Post
    I am grateful for the thorough replies.

    Quote Originally Posted by Philip M View Post
    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 View Post
    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 View Post
    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.
    Last edited by Taro; 05-02-2012 at 09:03 PM.
    Element ID

    Webs Support Helper

    Your friendly neighborhood Taroman.

  • #6
    Master Coder felgall's Avatar
    Join Date
    Sep 2005
    Location
    Sydney, Australia
    Posts
    6,622
    Thanks
    0
    Thanked 645 Times in 635 Posts
    Quote Originally Posted by Taro View Post
    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")..
    Last edited by felgall; 05-02-2012 at 10:21 PM.
    Stephen
    Learn Modern JavaScript - http://javascriptexample.net/
    Helping others to solve their computer problem at http://www.felgall.com/

    Don't forget to start your JavaScript code with "use strict"; which makes it easier to find errors in your code.

  • #7
    Supreme Master coder! Philip M's Avatar
    Join Date
    Jun 2002
    Location
    London, England
    Posts
    17,918
    Thanks
    203
    Thanked 2,531 Times in 2,509 Posts
    In short, if you do use parseInt(), you must always specify the radix (normally 10).

    Number() is normally the best choice.

    All the code given in this post has been tested and is intended to address the question asked.
    Unless stated otherwise it is not just a demonstration.


  •  

    Tags for this Thread

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •