java float double精度为什么会丢失

 我来答
百度网友f0f9883
2016-10-14 · TA获得超过317个赞
知道小有建树答主
回答量:258
采纳率:100%
帮助的人:157万
展开全部
  首先有一个观念,在计算机里所有的数据都是以二进制的形势保存的。
  我们来简单的举个例子,
  对于int类型的数值我们不陌生, 10进制类型和2进制的转换也很简单
  比如9= 0000 1001, 22=0001 0110 等
  (注意:以下x^y 表示x的y次方)
  换一种表示方式 9 = 2^3+2^0,22=2^4+2^2+2^1.很简单对不对

  但是对于float和double类型的数据就变得不一样了,在清楚为什么精度会丢失的问题之前还需要先明白一件事
  就像在10进制里 0.1 = 10^-1 0.01=10^-2 一样 在2进制里 小数点后边的数字也是用2^-n次方来解决的.
  那么问题来了,大家都知道 2^-1 =0.5,2^-2=0.25
  如果你想表示0.6的话在10进制里可以简单的用6*10^-1次方来表示,但是在2进制里怎么表示呢,?只能用尽可能接近的数据来表示比如 (1*2^-1)+(1*2^-3) 也就是 0.5+0.125 =0.625 约等于0.6 (这里只是举个例子,实际计算机在存储的时候要复杂一些),因为在2进制里边没有“准确”表示 比如 0.1,0.00000001 这样数据的2进制数据.
  还有一点,操作系统的位数也会影响到float和double的精度,比如32位和64位

  (纯手打 不明白的话 追问)
来自小金山优美的小飞象
2016-10-14 · TA获得超过343个赞
知道小有建树答主
回答量:122
采纳率:100%
帮助的人:75.1万
展开全部
没必要纠结这些问题,你还年轻着呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式