java - Difference of Two numbers - BigDecimal -
i trying learn more bigdecimal, below code makes me confuse.
double x = 1.2; string y = "1.2"; bigdecimal = bigdecimal.zero; bigdecimal b = bigdecimal.zero; = new bigdecimal(x); b = new bigdecimal(y); int res = res = b.compareto(a); if(res==1){ system.out.println("die"); }else if(res ==0){ system.out.println("live"); }else if (res==-1){ system.out.println("god loves you"); } result = die
i not ready "die", why bigdecimal hell bent on killing me.
this statement:
double x = 1.2; assigns nearest double-representable value 1.2 x. that's less 1.2 - value 1.2 can't represented in binary.
now when create bigdecimal value, "not quite 1.2" value retained exactly. constructor's documentation:
translates double bigdecimal exact decimal representation of double's binary floating-point value.
... whereas when use new bigdecimal("1.2") result exactly 1.2 - bigdecimal parses string, , decimal string representation can represented bigdecimal, that's whole point of it.
1.2 bigger "the nearest double representation of 1.2" hence res 1.
Comments
Post a Comment