已有17人关注
int整数乘以小数结果异常,为什么?
发表在C++图书答疑 2022-11-05 《零基础学C++》第4章 条件判断语句
是否精华
版块置顶:

联系时发现一个问题,比如:

int i=566;
console.writeline(i*0.85);
console.readline();

显示结果会出现481.09999999999997

不知道为什么会出现这种情况,求解?

分享到:
精彩评论 4
小禾斗
学分:7338 LV13
TA的每日心情
奋斗
2017-04-21 14:00:25
2022-11-09
沙发

这不是异常,计算机对于小数会自动认为是浮点数,如果不错处理,会按默认进度显示,这种情况需要设置输出结果保留几位小数

欲渡黄河冰川
学分:1 LV1
2022-11-15
板凳

默认以double精度计算,故显示一大串小数,double至少保存15位有效数字。由于计算机存储小数有精度问题,就不是精确的481.1了,但具体到“精度问题”怎么影响的,就不太清楚了。

sdlr2000
学分:24 LV2
2022-11-22
地板

小禾斗 发表于2022-11-09 10:16

这不是异常,计算机对于小数会自动认为是浮点数,如果不错处理,会按默认进度显示,这种情况需要设置输出结果保留几位小数

一般是使用string.Format控制吗?

1114967601
学分:23 LV2
2022-12-26
4L

欲渡黄河冰川 发表于2022-11-15 09:20

默认以double精度计算,故显示一大串小数,double至少保存15位有效数字。由于计算机存储小数有精度问题,就不是精确的481.1了,但具体到“精度问题”怎么影响的,就不太清楚了。

“精度问题”是由于十进制转换二进制无法精确表示导致的

首页上一页 1 下一页尾页 4 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照