关于double的精度的问题

比如这样的一段程序
double a = 10.1,b=11.2;
double result = 0;
result = a + b ;
System.out.println(result);
得到的结果 却不是期望的那样

请问 谁能从本质上帮我解释下这个原因呢 多谢了

原因是result 为21.3不能被精确表示为double,只能表示为最接近的值。
从本质上讲,问题在于并不是所有的小数都可以用二进制浮点数来精确表示的。
类似的double相减问题,JAVA解惑一书上有这个例子.
[url]http://www.iteye.com/problems/27059[/url]