鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖

对实型数据的舍入误差的疑问

[复制链接]
 楼主| 发表于 2020-8-4 15:37:41 | 显示全部楼层


                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-4 15:38:28 | 显示全部楼层
风过无痕1989 发表于 2020-7-31 13:51
我用的是VC++6.0,输出没有问题

我发了截图了,你看一下。并不是啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-4 15:39:34 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-8-1 14:11
因此,我们得出一个结论:
要么楼主描述问题错了,要么楼主在胡说。

我发了截图了,请看一下,我也不明白是为了什么。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-4 16:34:27 | 显示全部楼层
本帖最后由 风过无痕1989 于 2020-8-4 16:38 编辑
会反光的小行星 发表于 2020-8-4 15:38
我发了截图了,你看一下。并不是啊


我又用两个编译器试了一次,你没说错,VC++6.0编译器分开输出,那个“小数” 20 被忽略了,而DEV_C++编译器,分不分开输出结果都是一样的,“小数” 20都被忽略了

123456.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-4 17:15:44 | 显示全部楼层
浮点数在内存里是以二进制小数保存的,而在十进制中的有限小数到了二进制中就有可能变成循环小数(比如20表示成二进制就变成了00000000 00000000 00000000 00010100),二进制循环小数存储时只能被截断存储,于是再转换成十进制输出就会有误差

我去查了一下:ANSI C 并未具体规定每种类型数据的长度、精度、数值范围,有的系统将double所增加的32位全用于存放小数部分,这样可以增加数值的有效范围,减少舍入误差。有的系统则将所增加的位(bit)一部分存放指数部分,这样可以扩大数值范围。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-4 22:25:14 | 显示全部楼层
会反光的小行星 发表于 2020-8-4 15:39
我发了截图了,请看一下,我也不明白是为了什么。

不知道,我这里全都出现了误差
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-26 01:39:18 | 显示全部楼层
楼主这么个问题,要理解两个月?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 23:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表