差异原因

dracularking 2013-04-03 08:08:17
float a = 2.00f;
float b = 1.10f;

System.out.println(2.00 - 1.10);
System.out.println(a - b);


result:
0.8999999999999999
0.9

这两者差异的原因是什么呢?
...全文
236 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
LCore 2013-04-03
  • 打赏
  • 举报
回复
引用 6 楼 dracularking 的回复:
参考: http://en.wikipedia.org/wiki/Double_precision http://en.wikipedia.org/wiki/Single-precision_floating-point_format
楼主威武!
冰女潮汐 2013-04-03
  • 打赏
  • 举报
回复
引用 4 楼 dracularking 的回复:
引用 1 楼 xyz520522 的回复:这个可能一个是double类型一个是float类型精度的问题吧 引用 3 楼 kiritor 的回复:引用 楼主 dracularking 的回复:Java code?12345float a = 2.00f;float b = 1.10f; System.out.println(2.00 - 1.1……
			double a = 2.00;
			double b = 1.10;
			System.out.println( 2.00 - 1.10);
			System.out.println(a-b);
改成这个貌似两个就一样了,估计就是double类型跟float类型进度问题
dracularking 2013-04-03
  • 打赏
  • 举报
回复
精度相差一倍看来是错了 十进制下 float精度为6~9个有效数位 double精度为约16个有效数位 1.10d因为无法由二进制精确表示,其十进制近似值是: 1.100000000000000088817841970012523233890533447265625 再被2减得差: 0.899999999999999911182158029987476766109466552734375 float下因为有效数位只有6~9,进位后就得0.9(意外收获原来还会进位)
dracularking 2013-04-03
  • 打赏
  • 举报
回复
引用 1 楼 xyz520522 的回复:
这个可能一个是double类型一个是float类型精度的问题吧
引用 3 楼 kiritor 的回复:
引用 楼主 dracularking 的回复:Java code?12345float a = 2.00f;float b = 1.10f; System.out.println(2.00 - 1.10);System.out.println(a - b); result: 0.8999999999999999 0.9 这两者差异的原因是什……
对的 float型相减才那样,但是单精度和双精度 精度差异一倍,结果怎么那么迥异?想借这个问题正好研究清楚一下
LCore 2013-04-03
  • 打赏
  • 举报
回复
引用 楼主 dracularking 的回复:
Java code?12345float a = 2.00f;float b = 1.10f; System.out.println(2.00 - 1.10);System.out.println(a - b); result: 0.8999999999999999 0.9 这两者差异的原因是什么呢? ……
哦想明白了,第一个结果就是我上面说的原因, 至于两条输出不一样是因为 System.out.println(2.00 - 1.10);//双精度相减 System.out.println(a - b);//单精度相减 计算的结果都不准确,他们精度不同相减的结果不同?!
LCore 2013-04-03
  • 打赏
  • 举报
回复
引用 楼主 dracularking 的回复:
Java code?12345float a = 2.00f;float b = 1.10f; System.out.println(2.00 - 1.10);System.out.println(a - b); result: 0.8999999999999999 0.9 这两者差异的原因是什么呢? ……
第一个结果是由于计算机中浮点数的计算都是不准确的吧 至于第二个结果的原因,我小菜不懂啊, 难道是"-"操作符做了一些未知动作?!
冰女潮汐 2013-04-03
  • 打赏
  • 举报
回复
这个可能一个是double类型一个是float类型精度的问题吧

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧