C语言%f输出负数
答案:2 悬赏:50
解决时间 2021-01-20 02:53
- 提问者网友:一抹荒凉废墟
- 2021-01-19 05:52
C语言%f输出负数
最佳答案
- 二级知识专家网友:话散在刀尖上
- 2021-01-19 06:08
-798.124换航为二进制形式的值是:
-1100011111.111000000100000110001001001101110100101111
因为机器内部必须使用二进制方式存储,而且精度有限,这样去除了超过的位数后(去除时要四舍五入),结果与原始值就有差异了,所以浮点数多数都是不准确的。
具体到本数末尾为什么是023,这要看所使用的类型精度的小数点位数,位数不同结果也可能会不同,因为从不同的位置截断。
0.5转换为二进制是0.1,这样的数是能精确表示了,它不会乱。
-1100011111.111000000100000110001001001101110100101111
因为机器内部必须使用二进制方式存储,而且精度有限,这样去除了超过的位数后(去除时要四舍五入),结果与原始值就有差异了,所以浮点数多数都是不准确的。
具体到本数末尾为什么是023,这要看所使用的类型精度的小数点位数,位数不同结果也可能会不同,因为从不同的位置截断。
0.5转换为二进制是0.1,这样的数是能精确表示了,它不会乱。
全部回答
- 1楼网友:一袍清酒付
- 2021-01-19 06:53
浮点数都是有精度问题的,就算你设 x=0 ,用%f打印出来结果会是零点几,系统认为一个数足够小的时候就是0了. 如果很在意,可以把 %f 改为 %7.3f , 以限定所要的显示位数
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯