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
Post a Comment