Android Studio - Calculation comes to 0 despite not having any zero values in it





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







1















I'm having a little problem in Android Studio with a calculation coming to a value of 0.0. I think I know why, but I'm not sure how to fix it. The calculation is as follows:



float energyConsumption = ((20*128/100)/1000)*(12*blocsRounded*24*365);


blocsRounded is calculated from user input, and with the test data, is evaluating at 62.0, and I have checked this value to be sure it is working properly. That means, therefore, that this calculation should evaluate to 166,846.464. But instead, I am getting an output of 0.0. And I am 100% sure that I have the right value for blocsRounded, as I have output this to the console to check.



I assume that this has something to do with the way floating point numbers are stored (and changing this to a double gives me the same output of 0.0), but if this is the case, then I'm not sure how to get around it.



Any advice would be greatly appreciated.










share|improve this question































    1















    I'm having a little problem in Android Studio with a calculation coming to a value of 0.0. I think I know why, but I'm not sure how to fix it. The calculation is as follows:



    float energyConsumption = ((20*128/100)/1000)*(12*blocsRounded*24*365);


    blocsRounded is calculated from user input, and with the test data, is evaluating at 62.0, and I have checked this value to be sure it is working properly. That means, therefore, that this calculation should evaluate to 166,846.464. But instead, I am getting an output of 0.0. And I am 100% sure that I have the right value for blocsRounded, as I have output this to the console to check.



    I assume that this has something to do with the way floating point numbers are stored (and changing this to a double gives me the same output of 0.0), but if this is the case, then I'm not sure how to get around it.



    Any advice would be greatly appreciated.










    share|improve this question



























      1












      1








      1








      I'm having a little problem in Android Studio with a calculation coming to a value of 0.0. I think I know why, but I'm not sure how to fix it. The calculation is as follows:



      float energyConsumption = ((20*128/100)/1000)*(12*blocsRounded*24*365);


      blocsRounded is calculated from user input, and with the test data, is evaluating at 62.0, and I have checked this value to be sure it is working properly. That means, therefore, that this calculation should evaluate to 166,846.464. But instead, I am getting an output of 0.0. And I am 100% sure that I have the right value for blocsRounded, as I have output this to the console to check.



      I assume that this has something to do with the way floating point numbers are stored (and changing this to a double gives me the same output of 0.0), but if this is the case, then I'm not sure how to get around it.



      Any advice would be greatly appreciated.










      share|improve this question
















      I'm having a little problem in Android Studio with a calculation coming to a value of 0.0. I think I know why, but I'm not sure how to fix it. The calculation is as follows:



      float energyConsumption = ((20*128/100)/1000)*(12*blocsRounded*24*365);


      blocsRounded is calculated from user input, and with the test data, is evaluating at 62.0, and I have checked this value to be sure it is working properly. That means, therefore, that this calculation should evaluate to 166,846.464. But instead, I am getting an output of 0.0. And I am 100% sure that I have the right value for blocsRounded, as I have output this to the console to check.



      I assume that this has something to do with the way floating point numbers are stored (and changing this to a double gives me the same output of 0.0), but if this is the case, then I'm not sure how to get around it.



      Any advice would be greatly appreciated.







      java floating-point






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 23 '18 at 12:17









      Psytho

      1,9791819




      1,9791819










      asked Nov 23 '18 at 11:52









      mooseymansonmooseymanson

      208




      208
























          2 Answers
          2






          active

          oldest

          votes


















          2














          Integer divison is happening here. Multiply denominator with 1.0 make it float divison.try this



          float energyConsumption = ((20*128/(100*1.0))/1000)*(12*blocsRounded*24*365);





          share|improve this answer
























          • This worked perfectly, thanks. I will accept your answer as soon as the time restriction passes. Although, I'm not quite sure why it worked, o if you are able to give a quick explanation, I would be very grateful.

            – mooseymanson
            Nov 23 '18 at 12:05













          • @mooseymanson welcome :) time restriction means ?

            – Khalid Shah
            Nov 23 '18 at 12:06











          • @mooseymanson In integer division 999/1000 = 0 because nemerator and denominator both are integer. but if you multiply any one with 1.0 then that thing become float and float divison occur so 999*1.0/1000 = 0.99 . hope you get it.

            – Khalid Shah
            Nov 23 '18 at 12:08











          • I think I understand, thank you. I thought because the whole thing was being cast to a float, that it would treat all values in the calculation as a float.

            – mooseymanson
            Nov 23 '18 at 12:14



















          2














          This:



          (20*128/100)/1000


          evaluates to 0, because all the numbers are treated as of type int.

          Therefore 2560/100000 is 0.

          You only have to indicate that the 1st number is of type float by appending to it the suffixf:



          float energyConsumption = ((20f*128/(100*1.0))/1000)*(12*blocsRounded*24*365);





          share|improve this answer
























            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%2f53446213%2fandroid-studio-calculation-comes-to-0-despite-not-having-any-zero-values-in-it%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            2














            Integer divison is happening here. Multiply denominator with 1.0 make it float divison.try this



            float energyConsumption = ((20*128/(100*1.0))/1000)*(12*blocsRounded*24*365);





            share|improve this answer
























            • This worked perfectly, thanks. I will accept your answer as soon as the time restriction passes. Although, I'm not quite sure why it worked, o if you are able to give a quick explanation, I would be very grateful.

              – mooseymanson
              Nov 23 '18 at 12:05













            • @mooseymanson welcome :) time restriction means ?

              – Khalid Shah
              Nov 23 '18 at 12:06











            • @mooseymanson In integer division 999/1000 = 0 because nemerator and denominator both are integer. but if you multiply any one with 1.0 then that thing become float and float divison occur so 999*1.0/1000 = 0.99 . hope you get it.

              – Khalid Shah
              Nov 23 '18 at 12:08











            • I think I understand, thank you. I thought because the whole thing was being cast to a float, that it would treat all values in the calculation as a float.

              – mooseymanson
              Nov 23 '18 at 12:14
















            2














            Integer divison is happening here. Multiply denominator with 1.0 make it float divison.try this



            float energyConsumption = ((20*128/(100*1.0))/1000)*(12*blocsRounded*24*365);





            share|improve this answer
























            • This worked perfectly, thanks. I will accept your answer as soon as the time restriction passes. Although, I'm not quite sure why it worked, o if you are able to give a quick explanation, I would be very grateful.

              – mooseymanson
              Nov 23 '18 at 12:05













            • @mooseymanson welcome :) time restriction means ?

              – Khalid Shah
              Nov 23 '18 at 12:06











            • @mooseymanson In integer division 999/1000 = 0 because nemerator and denominator both are integer. but if you multiply any one with 1.0 then that thing become float and float divison occur so 999*1.0/1000 = 0.99 . hope you get it.

              – Khalid Shah
              Nov 23 '18 at 12:08











            • I think I understand, thank you. I thought because the whole thing was being cast to a float, that it would treat all values in the calculation as a float.

              – mooseymanson
              Nov 23 '18 at 12:14














            2












            2








            2







            Integer divison is happening here. Multiply denominator with 1.0 make it float divison.try this



            float energyConsumption = ((20*128/(100*1.0))/1000)*(12*blocsRounded*24*365);





            share|improve this answer













            Integer divison is happening here. Multiply denominator with 1.0 make it float divison.try this



            float energyConsumption = ((20*128/(100*1.0))/1000)*(12*blocsRounded*24*365);






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Nov 23 '18 at 11:54









            Khalid ShahKhalid Shah

            1,92921023




            1,92921023













            • This worked perfectly, thanks. I will accept your answer as soon as the time restriction passes. Although, I'm not quite sure why it worked, o if you are able to give a quick explanation, I would be very grateful.

              – mooseymanson
              Nov 23 '18 at 12:05













            • @mooseymanson welcome :) time restriction means ?

              – Khalid Shah
              Nov 23 '18 at 12:06











            • @mooseymanson In integer division 999/1000 = 0 because nemerator and denominator both are integer. but if you multiply any one with 1.0 then that thing become float and float divison occur so 999*1.0/1000 = 0.99 . hope you get it.

              – Khalid Shah
              Nov 23 '18 at 12:08











            • I think I understand, thank you. I thought because the whole thing was being cast to a float, that it would treat all values in the calculation as a float.

              – mooseymanson
              Nov 23 '18 at 12:14



















            • This worked perfectly, thanks. I will accept your answer as soon as the time restriction passes. Although, I'm not quite sure why it worked, o if you are able to give a quick explanation, I would be very grateful.

              – mooseymanson
              Nov 23 '18 at 12:05













            • @mooseymanson welcome :) time restriction means ?

              – Khalid Shah
              Nov 23 '18 at 12:06











            • @mooseymanson In integer division 999/1000 = 0 because nemerator and denominator both are integer. but if you multiply any one with 1.0 then that thing become float and float divison occur so 999*1.0/1000 = 0.99 . hope you get it.

              – Khalid Shah
              Nov 23 '18 at 12:08











            • I think I understand, thank you. I thought because the whole thing was being cast to a float, that it would treat all values in the calculation as a float.

              – mooseymanson
              Nov 23 '18 at 12:14

















            This worked perfectly, thanks. I will accept your answer as soon as the time restriction passes. Although, I'm not quite sure why it worked, o if you are able to give a quick explanation, I would be very grateful.

            – mooseymanson
            Nov 23 '18 at 12:05







            This worked perfectly, thanks. I will accept your answer as soon as the time restriction passes. Although, I'm not quite sure why it worked, o if you are able to give a quick explanation, I would be very grateful.

            – mooseymanson
            Nov 23 '18 at 12:05















            @mooseymanson welcome :) time restriction means ?

            – Khalid Shah
            Nov 23 '18 at 12:06





            @mooseymanson welcome :) time restriction means ?

            – Khalid Shah
            Nov 23 '18 at 12:06













            @mooseymanson In integer division 999/1000 = 0 because nemerator and denominator both are integer. but if you multiply any one with 1.0 then that thing become float and float divison occur so 999*1.0/1000 = 0.99 . hope you get it.

            – Khalid Shah
            Nov 23 '18 at 12:08





            @mooseymanson In integer division 999/1000 = 0 because nemerator and denominator both are integer. but if you multiply any one with 1.0 then that thing become float and float divison occur so 999*1.0/1000 = 0.99 . hope you get it.

            – Khalid Shah
            Nov 23 '18 at 12:08













            I think I understand, thank you. I thought because the whole thing was being cast to a float, that it would treat all values in the calculation as a float.

            – mooseymanson
            Nov 23 '18 at 12:14





            I think I understand, thank you. I thought because the whole thing was being cast to a float, that it would treat all values in the calculation as a float.

            – mooseymanson
            Nov 23 '18 at 12:14













            2














            This:



            (20*128/100)/1000


            evaluates to 0, because all the numbers are treated as of type int.

            Therefore 2560/100000 is 0.

            You only have to indicate that the 1st number is of type float by appending to it the suffixf:



            float energyConsumption = ((20f*128/(100*1.0))/1000)*(12*blocsRounded*24*365);





            share|improve this answer




























              2














              This:



              (20*128/100)/1000


              evaluates to 0, because all the numbers are treated as of type int.

              Therefore 2560/100000 is 0.

              You only have to indicate that the 1st number is of type float by appending to it the suffixf:



              float energyConsumption = ((20f*128/(100*1.0))/1000)*(12*blocsRounded*24*365);





              share|improve this answer


























                2












                2








                2







                This:



                (20*128/100)/1000


                evaluates to 0, because all the numbers are treated as of type int.

                Therefore 2560/100000 is 0.

                You only have to indicate that the 1st number is of type float by appending to it the suffixf:



                float energyConsumption = ((20f*128/(100*1.0))/1000)*(12*blocsRounded*24*365);





                share|improve this answer













                This:



                (20*128/100)/1000


                evaluates to 0, because all the numbers are treated as of type int.

                Therefore 2560/100000 is 0.

                You only have to indicate that the 1st number is of type float by appending to it the suffixf:



                float energyConsumption = ((20f*128/(100*1.0))/1000)*(12*blocsRounded*24*365);






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 23 '18 at 12:09









                forpasforpas

                19.8k4830




                19.8k4830






























                    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%2f53446213%2fandroid-studio-calculation-comes-to-0-despite-not-having-any-zero-values-in-it%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

                    "Incorrect syntax near the keyword 'ON'. (on update cascade, on delete cascade,)

                    Alcedinidae

                    Origin of the phrase “under your belt”?