Why does 0.-5 evaluate to -5?var functionName = function() {} vs function functionName() {}Difference between...

The No-Straight Maze

How do I add a strong "onion flavor" to the biryani (in restaurant style)?

How can I handle players killing my NPC outside of combat?

What are some ways of extending a description of a scenery?

How do I narratively explain how in-game circumstances do not mechanically allow a PC to instantly kill an NPC?

Does the US government have any planning in place to ensure there's no shortages of food, fuel, steel and other commodities?

Reading Mishnayos without understanding

How much light is too much?

Taking an academic pseudonym?

Why does 0.-5 evaluate to -5?

Sensor logger for Raspberry Pi in a stratospheric probe

Why is "rm -r" unable to delete this folder?

Why did Ylvis use "go" instead of "say" in phrases like "Dog goes 'woof'"?

Is it possible to detect 100% of SQLi with a simple regex?

What species should be used for storage of human minds?

Was there a pre-determined arrangement for the division of Germany in case it surrendered before any Soviet forces entered its territory?

How do dictionaries source attestation?

Is the fingering of thirds flexible or do I have to follow the rules?

Identical projects by students at two different colleges: still plagiarism?

How can I prevent an oracle who can see into the past from knowing everything that has happened?

Is there any danger of my neighbor having my wife's signature?

Other than edits for international editions, did Harry Potter and the Philosopher's Stone receive errata?

What does からか mean?

Why do neural networks need so many examples to perform?



Why does 0.-5 evaluate to -5?


var functionName = function() {} vs function functionName() {}Difference between == and === in JavaScriptHow does JavaScript .prototype work?What does “use strict” do in JavaScript, and what is the reasoning behind it?Storing Objects in HTML5 localStorageWhat is JSONP all about?Why does Google prepend while(1); to their JSON responses?How to print a number with commas as thousands separators in JavaScriptIs it possible to apply CSS to half of a character?Can (a== 1 && a ==2 && a==3) ever evaluate to true?













9















Suppose I write 0.5 as 0.-5 in unexpected way, but it can still run. What does 0. in 0.-5 do so that it can still run and evaluates to -5?



I also tried alert(0.-5+1) which prints -4, does JavaScript ignore 0. in 0.-5?










share|improve this question




















  • 4





    0. is like 0.0. Or just 0.

    – Ry-
    6 hours ago








  • 1





    What makes you think that 0.-5 is an "unexpected way"?

    – Nico Haase
    54 mins ago











  • @NicoHaase: I'm pretty sure the OP used "unexpected way" to mean "I did not intend/expect to write that, but somehow I did".

    – Filip Milovanović
    28 mins ago
















9















Suppose I write 0.5 as 0.-5 in unexpected way, but it can still run. What does 0. in 0.-5 do so that it can still run and evaluates to -5?



I also tried alert(0.-5+1) which prints -4, does JavaScript ignore 0. in 0.-5?










share|improve this question




















  • 4





    0. is like 0.0. Or just 0.

    – Ry-
    6 hours ago








  • 1





    What makes you think that 0.-5 is an "unexpected way"?

    – Nico Haase
    54 mins ago











  • @NicoHaase: I'm pretty sure the OP used "unexpected way" to mean "I did not intend/expect to write that, but somehow I did".

    – Filip Milovanović
    28 mins ago














9












9








9


2






Suppose I write 0.5 as 0.-5 in unexpected way, but it can still run. What does 0. in 0.-5 do so that it can still run and evaluates to -5?



I also tried alert(0.-5+1) which prints -4, does JavaScript ignore 0. in 0.-5?










share|improve this question
















Suppose I write 0.5 as 0.-5 in unexpected way, but it can still run. What does 0. in 0.-5 do so that it can still run and evaluates to -5?



I also tried alert(0.-5+1) which prints -4, does JavaScript ignore 0. in 0.-5?







javascript numbers






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 34 mins ago









Community

11




11










asked 6 hours ago









mmmaaammmaaa

2,2461312




2,2461312








  • 4





    0. is like 0.0. Or just 0.

    – Ry-
    6 hours ago








  • 1





    What makes you think that 0.-5 is an "unexpected way"?

    – Nico Haase
    54 mins ago











  • @NicoHaase: I'm pretty sure the OP used "unexpected way" to mean "I did not intend/expect to write that, but somehow I did".

    – Filip Milovanović
    28 mins ago














  • 4





    0. is like 0.0. Or just 0.

    – Ry-
    6 hours ago








  • 1





    What makes you think that 0.-5 is an "unexpected way"?

    – Nico Haase
    54 mins ago











  • @NicoHaase: I'm pretty sure the OP used "unexpected way" to mean "I did not intend/expect to write that, but somehow I did".

    – Filip Milovanović
    28 mins ago








4




4





0. is like 0.0. Or just 0.

– Ry-
6 hours ago







0. is like 0.0. Or just 0.

– Ry-
6 hours ago






1




1





What makes you think that 0.-5 is an "unexpected way"?

– Nico Haase
54 mins ago





What makes you think that 0.-5 is an "unexpected way"?

– Nico Haase
54 mins ago













@NicoHaase: I'm pretty sure the OP used "unexpected way" to mean "I did not intend/expect to write that, but somehow I did".

– Filip Milovanović
28 mins ago





@NicoHaase: I'm pretty sure the OP used "unexpected way" to mean "I did not intend/expect to write that, but somehow I did".

– Filip Milovanović
28 mins ago












4 Answers
4






active

oldest

votes


















20














Trailing digits after a . are optional:






console.log(0. === 0);





So



0.-5


evalutes to



0 - 5


which is just -5. Similarly,



0.-5+1


is



0 - 5 + 1


which is



-5 + 1


or -4.






share|improve this answer































    2














    In JS you can express a number with optional decimal point.



    x = 5.;    //5
    x = 5. + 6. //11


    And as of Tvde1's comment, any Number methods can be applied too.



    5..toString()





    share|improve this answer





















    • 1





      You can even do 5..toString().

      – Tvde1
      4 hours ago











    • If fact, you have to do 5..toString() to call the method, otherwise, you have to use parenthesis: (5).toString()

      – jo_va
      33 mins ago



















    0














    0.-5 could be successfully parsed as 0., - and 5. Below is the abstract syntax tree for the expression:



    parse tree generated by astexplorer



    This (in an unexpected way) is valid JavaScript and evaluates to -5.





    share





















    • 1





      And what is wrong with that?

      – Salman A
      3 mins ago



















    -1














    The trailing dot can be used to call a method directly on a number. Normally you would wrap it in parentheses to isolate the dot, because JavaScript syntax implies the decimal part after the first dot. If you place more two dots, then JavaScript knows the decimal part is empty and the second dot is here to call a method. See this for more information.






    console.log((5).toString());
    console.log(5..toString());





    If you omit the dot, you will get an error:




    console.log(5.toString())








    share|improve this answer
























    • "The trailing dot can be used to call a method directly on a number" — The trailing dot here is a decimal point.

      – Quentin
      5 mins ago











    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54859228%2fwhy-does-0-5-evaluate-to-5%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    4 Answers
    4






    active

    oldest

    votes








    4 Answers
    4






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    20














    Trailing digits after a . are optional:






    console.log(0. === 0);





    So



    0.-5


    evalutes to



    0 - 5


    which is just -5. Similarly,



    0.-5+1


    is



    0 - 5 + 1


    which is



    -5 + 1


    or -4.






    share|improve this answer




























      20














      Trailing digits after a . are optional:






      console.log(0. === 0);





      So



      0.-5


      evalutes to



      0 - 5


      which is just -5. Similarly,



      0.-5+1


      is



      0 - 5 + 1


      which is



      -5 + 1


      or -4.






      share|improve this answer


























        20












        20








        20







        Trailing digits after a . are optional:






        console.log(0. === 0);





        So



        0.-5


        evalutes to



        0 - 5


        which is just -5. Similarly,



        0.-5+1


        is



        0 - 5 + 1


        which is



        -5 + 1


        or -4.






        share|improve this answer













        Trailing digits after a . are optional:






        console.log(0. === 0);





        So



        0.-5


        evalutes to



        0 - 5


        which is just -5. Similarly,



        0.-5+1


        is



        0 - 5 + 1


        which is



        -5 + 1


        or -4.






        console.log(0. === 0);





        console.log(0. === 0);






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 6 hours ago









        CertainPerformanceCertainPerformance

        88.9k154877




        88.9k154877

























            2














            In JS you can express a number with optional decimal point.



            x = 5.;    //5
            x = 5. + 6. //11


            And as of Tvde1's comment, any Number methods can be applied too.



            5..toString()





            share|improve this answer





















            • 1





              You can even do 5..toString().

              – Tvde1
              4 hours ago











            • If fact, you have to do 5..toString() to call the method, otherwise, you have to use parenthesis: (5).toString()

              – jo_va
              33 mins ago
















            2














            In JS you can express a number with optional decimal point.



            x = 5.;    //5
            x = 5. + 6. //11


            And as of Tvde1's comment, any Number methods can be applied too.



            5..toString()





            share|improve this answer





















            • 1





              You can even do 5..toString().

              – Tvde1
              4 hours ago











            • If fact, you have to do 5..toString() to call the method, otherwise, you have to use parenthesis: (5).toString()

              – jo_va
              33 mins ago














            2












            2








            2







            In JS you can express a number with optional decimal point.



            x = 5.;    //5
            x = 5. + 6. //11


            And as of Tvde1's comment, any Number methods can be applied too.



            5..toString()





            share|improve this answer















            In JS you can express a number with optional decimal point.



            x = 5.;    //5
            x = 5. + 6. //11


            And as of Tvde1's comment, any Number methods can be applied too.



            5..toString()






            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited 1 hour ago

























            answered 5 hours ago









            Charlie HCharlie H

            9,05342550




            9,05342550








            • 1





              You can even do 5..toString().

              – Tvde1
              4 hours ago











            • If fact, you have to do 5..toString() to call the method, otherwise, you have to use parenthesis: (5).toString()

              – jo_va
              33 mins ago














            • 1





              You can even do 5..toString().

              – Tvde1
              4 hours ago











            • If fact, you have to do 5..toString() to call the method, otherwise, you have to use parenthesis: (5).toString()

              – jo_va
              33 mins ago








            1




            1





            You can even do 5..toString().

            – Tvde1
            4 hours ago





            You can even do 5..toString().

            – Tvde1
            4 hours ago













            If fact, you have to do 5..toString() to call the method, otherwise, you have to use parenthesis: (5).toString()

            – jo_va
            33 mins ago





            If fact, you have to do 5..toString() to call the method, otherwise, you have to use parenthesis: (5).toString()

            – jo_va
            33 mins ago











            0














            0.-5 could be successfully parsed as 0., - and 5. Below is the abstract syntax tree for the expression:



            parse tree generated by astexplorer



            This (in an unexpected way) is valid JavaScript and evaluates to -5.





            share





















            • 1





              And what is wrong with that?

              – Salman A
              3 mins ago
















            0














            0.-5 could be successfully parsed as 0., - and 5. Below is the abstract syntax tree for the expression:



            parse tree generated by astexplorer



            This (in an unexpected way) is valid JavaScript and evaluates to -5.





            share





















            • 1





              And what is wrong with that?

              – Salman A
              3 mins ago














            0












            0








            0







            0.-5 could be successfully parsed as 0., - and 5. Below is the abstract syntax tree for the expression:



            parse tree generated by astexplorer



            This (in an unexpected way) is valid JavaScript and evaluates to -5.





            share















            0.-5 could be successfully parsed as 0., - and 5. Below is the abstract syntax tree for the expression:



            parse tree generated by astexplorer



            This (in an unexpected way) is valid JavaScript and evaluates to -5.






            share













            share


            share








            edited 4 mins ago

























            answered 9 mins ago









            Salman ASalman A

            182k66339433




            182k66339433








            • 1





              And what is wrong with that?

              – Salman A
              3 mins ago














            • 1





              And what is wrong with that?

              – Salman A
              3 mins ago








            1




            1





            And what is wrong with that?

            – Salman A
            3 mins ago





            And what is wrong with that?

            – Salman A
            3 mins ago











            -1














            The trailing dot can be used to call a method directly on a number. Normally you would wrap it in parentheses to isolate the dot, because JavaScript syntax implies the decimal part after the first dot. If you place more two dots, then JavaScript knows the decimal part is empty and the second dot is here to call a method. See this for more information.






            console.log((5).toString());
            console.log(5..toString());





            If you omit the dot, you will get an error:




            console.log(5.toString())








            share|improve this answer
























            • "The trailing dot can be used to call a method directly on a number" — The trailing dot here is a decimal point.

              – Quentin
              5 mins ago
















            -1














            The trailing dot can be used to call a method directly on a number. Normally you would wrap it in parentheses to isolate the dot, because JavaScript syntax implies the decimal part after the first dot. If you place more two dots, then JavaScript knows the decimal part is empty and the second dot is here to call a method. See this for more information.






            console.log((5).toString());
            console.log(5..toString());





            If you omit the dot, you will get an error:




            console.log(5.toString())








            share|improve this answer
























            • "The trailing dot can be used to call a method directly on a number" — The trailing dot here is a decimal point.

              – Quentin
              5 mins ago














            -1












            -1








            -1







            The trailing dot can be used to call a method directly on a number. Normally you would wrap it in parentheses to isolate the dot, because JavaScript syntax implies the decimal part after the first dot. If you place more two dots, then JavaScript knows the decimal part is empty and the second dot is here to call a method. See this for more information.






            console.log((5).toString());
            console.log(5..toString());





            If you omit the dot, you will get an error:




            console.log(5.toString())








            share|improve this answer













            The trailing dot can be used to call a method directly on a number. Normally you would wrap it in parentheses to isolate the dot, because JavaScript syntax implies the decimal part after the first dot. If you place more two dots, then JavaScript knows the decimal part is empty and the second dot is here to call a method. See this for more information.






            console.log((5).toString());
            console.log(5..toString());





            If you omit the dot, you will get an error:




            console.log(5.toString())








            console.log((5).toString());
            console.log(5..toString());





            console.log((5).toString());
            console.log(5..toString());





            console.log(5.toString())





            console.log(5.toString())






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered 18 mins ago









            jo_vajo_va

            4,6531726




            4,6531726













            • "The trailing dot can be used to call a method directly on a number" — The trailing dot here is a decimal point.

              – Quentin
              5 mins ago



















            • "The trailing dot can be used to call a method directly on a number" — The trailing dot here is a decimal point.

              – Quentin
              5 mins ago

















            "The trailing dot can be used to call a method directly on a number" — The trailing dot here is a decimal point.

            – Quentin
            5 mins ago





            "The trailing dot can be used to call a method directly on a number" — The trailing dot here is a decimal point.

            – Quentin
            5 mins ago


















            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54859228%2fwhy-does-0-5-evaluate-to-5%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            (145452) 2005 RN43 Классификация | Примечания | Ссылки |...

            Щит и меч (фильм) Содержание Названия серий | Сюжет |...

            Энтрерриос (город) Содержание История | Географическое...