c语言中1.0/3*3为什么等于1
main(){intd;d=1.0/3*3;printf("d=%d\n",d);}为什么输出d=1?1.0/3不是应该等于0.333333333333333吗,然后乘以...
main()
{
int d;
d=1.0/3*3;
printf("d=%d\n",d);
}
为什么输出d=1?
1.0/3不是应该等于0.333333333333333吗,然后乘以3应该等于0.999999999999999啊,为什么结果是1呢? 展开
{
int d;
d=1.0/3*3;
printf("d=%d\n",d);
}
为什么输出d=1?
1.0/3不是应该等于0.333333333333333吗,然后乘以3应该等于0.999999999999999啊,为什么结果是1呢? 展开
3个回答
展开全部
%f默认保留六位小数,不足六位以0补齐,超过六位按四舍五入截断
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-05-06
展开全部
浮点数计算结果是近似结果
追问
怎么个近似法能说说吗?
我刚才试了一下 d=0.9...(有14个9)输出(d=%d,d)结果d=0
如果d=0.9...(有十五个9)那么结果就是1了。
难道超过十五个9他就近似等于1? 十五个9以下以整数输出浮点数就把后面小数位数全舍去?
追答
1.0/3!=0.333333...
不可能去表示无穷的数据,只能近似表示
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询