搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 为什么int类型转float。【【【输入一个数字之后】】】。显示为0.000000 ?
标题:
为什么int类型转float。【【【输入一个数字之后】】】。显示为0.000000 ?
只看楼主
dlfhcg
等 级:
新手上路
帖 子:13
专家分:5
注 册:2010-9-23
第
11
楼
得分:0
"单精度的有效数字是小数点后六位,双精度是十位" 貌似双精度的是15~16位吧。
有时睡觉是件好工作,黑白颠倒的大学生活倒省了不少饭钱,省钱就是赚钱。
2010-09-29 23:34
forever74
来 自:CC
等 级:
贵宾
威 望:
49
帖 子:1636
专家分:3940
注 册:2007-12-27
第
12
楼
得分:20
要理解这个事儿,得知道俩问题
一个是printf函数遇到%f的时候,就会把后面传递的对应参数压栈后的值理解为double类型。
你送过去的i按照平台不同,一般是32位或者16位,而printf要按照double,也就是64位来理解它,那么这时就会在栈底后面多占用一些位,而这些位的值我们假设都是0(否则也可以认为是随机值)。
第二是浮点数存储格式,双精度浮点数从高位开始是1位符号,11位阶码,52位尾数
按照上面说的,64位里面的高32位(甚至48位)都是0,那就是说阶码部分都是0,都是0的阶码表示尾数要乘以2的-1023次方,这样一来,你的i充当的尾数部分无论是多少,乘以2的-1023次方以后都非常小了,你用%f输出的仅仅有小数点后面6位,当然都是0了。
对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2010-09-30 10:22
xuexibianc
等 级:
论坛游民
帖 子:35
专家分:34
注 册:2010-9-8
第
13
楼
得分:0
...
2010-09-30 10:43
13
2/2页
1
2
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-321545-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 1.032521 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved