永发信息网

java中double类型存储和运算的问题

答案:2  悬赏:70  手机版
解决时间 2021-07-17 23:04

问题源于System.out.println(2.0-1.1);的输出是0.8999999999999999。网上大家都认同的一个合理解释是“有些小数在机器中是不能精确表示的”。是的,对于一位小数(十进制),除了0.0和0.5,其余的在机器中都不能精确表示(二进制),小数位多了也同样有很多不能精确表示。

但是进行另外两次测试,System.out.println(1.1*10);System.out.println(1.11*10);输出结果是11.0和11.100000000000001。既然这两次机器中同样是使用不精确的数1.1和1.11来计算,为何结果有一个是精确的,另一个是不精确的?
还有,如果把上面得例子中的双精度double型全换成单精度float型,所有的结果都是精确的,正确的。但是float和double一样在机器中存储时是不精确的无限小数,为什么结果有差别?

最佳答案

跟极限值有关系!

全部回答

小数好像只是表示无限接近那个数 不等于那个数

试试 2.0/0.0 不会出现异常

0.0 只是一个无线接近0的数 但是不会被表示为0

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
和女孩不熟悉,送热水袋,她会怎么想或怎么说
淘宝网支付宝怎么弄?
苏州园区星海街周围哪里可以租到便宜的房子啊
我为什么不能在QQ上给已和QQ绑定的手机发短信
关于电脑玩游戏时无故弹出桌面该怎么办?没按
北京朝阳区四惠那有农行?
naning9官网网址在哪里?
电脑为什么会屏蔽一些游戏和软件?
为什么进QQ空间网页就卡死
急求CAD注册授权号,
我号快75了想弄个好BB
<绯雨倾城>哪里可以找到这小说的全文?
QQ游戏宠物的解锁密码忘了怎么办呀?
A+A+A+B+B=7.8 A+A+B+B+B=8.7 A=? B=?
有什么好听的歌才?
推荐资讯
我该如何道歉
均值定理反例
救命~!ARP攻击严重影响我网速了
组合名称(来哦)
我DNF刷悬空的时候,选牌地时候得了个紫色装
现在是2009年 我的车强制险只买到2008年12月
童话谁唱的???
怎样回复申诉回执编号
日食什么时候来
QQ牧场谁能要请开通?
下载电子书上哪个网站最好
CSOL怎么开到杰拉德和大卫 布莱克?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?