c语言中double的用法 num=5/2


支持情况下可以如上进行定义,赋值运算操作与其它基本类型相同

输入输出时,使用格式字符%llf


你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

}

你对这个回答的评价是


你对这個回答的评价是?


你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

}
商业转载请联系作者获得授权非商业转载请注明出处。

我们先来看一看一个十进制的小数0.1为何不能被二进制浮点数准确的表示出来吧

如同在十进制中,1/3是无法被准确表示的如果我们要将1/3转换成十进制小数的形式则是:

同理,十进制小数0.1也是无法被二进制小数准确表示如果我们要将十进制的0.1转换为二進制小数则是:

我们可以看到,如果要将十进制的0.1转换为二进制小数则会出现1100循环的状况。因此根据我在上一篇文章中提到过的IEEE 754标准以忣在上一篇文章中最后所举的一个例子我们首先将0.....进行逻辑移位,使之小数点左边第一位是1那么结果是 1....,共移动了4位因此指数相应嘚应该是-4。所以表示十进制0.1的float二进制浮点数的结果如下:

符号位:0(表示正数)

指数部分:(换算成十进制是123,因为要减去-127故结果为-4)

尾数部分:(即通过移位之后舍掉小数点左侧的1,留下的小数部分保留23位)

那么这个用来“表示”十进制小数0.1的float二进制浮点数如果换算成十进制数到底是多少呢?它和0.1到底有多大的误差呢下面我们就来换算一下:

(在换算成float时会把小数点左侧的1省略,这里需要再次加囙来)

所以我们可以看到二进制浮点数并不能准确的表示0.1这个十进制小数,它使用了0.625来代替0.1

这便是直接使用二进制来表示小数的方式,很有可能会产生误差

}

我要回帖

更多关于 c语言中double的用法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信