float f=2.0 print( "%d", (f+2.5)) 结果为什么是零
答案:2 悬赏:70 手机版
解决时间 2021-03-01 12:48
- 提问者网友:饥饿走向夜
- 2021-03-01 01:30
float f=2.0 print( "%d", (f+2.5)) 结果为什么是零
最佳答案
- 五星知识达人网友:杯酒困英雄
- 2021-03-01 01:51
IEEE 国际标准 for Binary Floating-Point Arithmetic,计算机float 型 机内数 占位是:
31 bit 符号位,30-23 bit 指数(阶码),22-0 bit 小数(数码)
(f+2.5) 是 float 型,用 IEEE 国际标准 表示。
整型数,正数用原码,负数用补码表示。
print( "%d", 就是把 IEEE 标准 表示的float 型数 按 整型数 解释 输出,所以结果是 0。
如果 用 print( "%d", (int) (f+2.5)) 就不会错了。
至于 float 4.5 内存里是什么样的,你可以用 联合体 声明 一个 float 和 一个 char [4] 数组,让 float 元素等于 4.5,再把 char [4] 打印出来看,就能分析出 为什么整型数得零。
31 bit 符号位,30-23 bit 指数(阶码),22-0 bit 小数(数码)
(f+2.5) 是 float 型,用 IEEE 国际标准 表示。
整型数,正数用原码,负数用补码表示。
print( "%d", 就是把 IEEE 标准 表示的float 型数 按 整型数 解释 输出,所以结果是 0。
如果 用 print( "%d", (int) (f+2.5)) 就不会错了。
至于 float 4.5 内存里是什么样的,你可以用 联合体 声明 一个 float 和 一个 char [4] 数组,让 float 元素等于 4.5,再把 char [4] 打印出来看,就能分析出 为什么整型数得零。
全部回答
- 1楼网友:有你哪都是故乡
- 2021-03-01 03:07
你好!
因为用整数格式输出浮点数,结果并不是浮点数的整数值
仅代表个人观点,不喜勿喷,谢谢。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯