java - Why is the value I'm getting different for 2 similar programs below even though i only changed the type for the method's value -


code 1: class 1

import java.text.numberformat;  public class testing2 { int balance;  void addinterest(int rate) {     balance += balance*(rate/100);  }  void display() {     numberformat currency = numberformat.getcurrencyinstance();      system.out.print ("the balance ");     system.out.print(currency.format(balance));      } } 

class 2

import java.util.random;  public class testing {  public static void main (string args[]) {      testing2 atesting = new testing2();     random myrandom = new random();      atesting.balance = myrandom.nextint(501);     int rate2 = 5;      system.out.println("current balance: " + atesting.balance);     system.out.println("current rate: " + rate2);      atesting.addinterest(rate2);      atesting.display();      system.out.println();     } } 

output:

current balance: 327 current rate: 5 balance myr327.00

code 2: class 1

import java.text.numberformat;  public class testing2 { double balance;  void addinterest(double rate) {     balance += balance*(rate/100);  }  void display() {     numberformat currency = numberformat.getcurrencyinstance();      system.out.print ("the balance ");     system.out.print(currency.format(balance));      } } 

class 2

import java.util.random;  public class testing {  public static void main (string args[]) {      testing2 atesting = new testing2();     random myrandom = new random();      atesting.balance = myrandom.nextint(501);     double rate2 = 5;      system.out.println("current balance: " + atesting.balance);     system.out.println("current rate: " + rate2);      atesting.addinterest(rate2);      atesting.display();      system.out.println();     } } 

output:

current balance: 170.0 current rate: 5.0 balance myr178.50

conclusion: first program not change final value of balance whilst 2nd program does. reason this? changed type of variable int double , nothing more.

in first case you're doing

int balance = 327; int rate = 5; balance += balance * (rate / 100); 

when division on int result int, result of division rate / 100 (int)rate / 100 gives(int)0.05 0. gives balance += balance * 0 that's why balance hasn't changed in first program.

when change variables , parameters double there no truncating values calculations go expect.


Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -