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;
}
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
add a comment |
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
add a comment |
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
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
java floating-point
edited Nov 23 '18 at 12:17
Psytho
1,9791819
1,9791819
asked Nov 23 '18 at 11:52
mooseymansonmooseymanson
208
208
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
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);
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
add a comment |
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);
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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);
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
add a comment |
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);
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
add a comment |
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);
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);
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
add a comment |
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
add a comment |
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);
add a comment |
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);
add a comment |
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);
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);
answered Nov 23 '18 at 12:09
forpasforpas
19.8k4830
19.8k4830
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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