c语言doublc语言else什么意思思

出现矛盾:c语言中float会自动转换为double? - 知乎33被浏览4547分享邀请回答6添加评论分享收藏感谢收起103 条评论分享收藏感谢收起查看更多回答为什么C语言中浮点数(double/float)没办法进行等于关系逻辑运算? - 知乎60被浏览5138分享邀请回答#include &stdio.h&
int main(void)
for(i = 0, j = 0; j != 101; j++, i += 0.1)
printf("%.20lf\t %.1f\n", i, i);
按不同精度输出,看到底是什么东西:看到了吧:看到了吧:在内存中,根本就不是10.0,而是9.999999,所以它显然不等于10.0,所以循环也不会终止。浮点数在内存中的状态和输出值未必是一致的,printf可能会四舍五入。Q2的疑问是:加了0.1到底是多少?需要给你一个前提定义就是大多数十进制小数无法转换为精确的二进制小数,对于0.1来说,float值大概是:0.11612你不信就看我同样的代码,第二个输出就是:因为十进制浮点数无法转化为精确的二进制浮点数,所以,你得到的结果注定是不精确的,所以累加以后也永远得不到精确的10.0至于如何把十进制小数转化为二进制小数,这是基础知识,自己看书找答案。249 条评论分享收藏感谢收起51 条评论分享收藏感谢收起查看更多回答博客访问: 618762
博文数量: 300
博客积分: 37
博客等级: 民兵
技术积分: 772
注册时间:
认证徽章:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
原文地址: 作者:
&& 好长时间都没有写过C程序了,偶尔用到double类型都不会使用输出格式了,下面就是我所整理的关于double类型的输出格式。
&&& double (双精度浮点型)类型是C语言的基本类型之一,占有8个字节最大可以表示到1.7*10^308,一般情况下,都可以满足程序的需要。
&& 好了,下面来说一下他的输出格式吧!
&& double 常规输出为%lf(注意float类型输出为%f) 例如:定义double a = 1.0;输出用printf("%lf",a);
&&& 但是double类型在默认情况下,输出小数点后6位,我们通常要减少其小数点后的长度。则可以使用 "%m.nlf"的形式,其中m和n都为正整数。m表示输出的浮点型的数据占m位,如果实际长度不等于m,则按实际长度输出,n表示输出的小数点位数。所以说,m实际上可以不用管,直接用0代替或者不写都可以!
&& 例如上面输出为:1.000000(默认情况下)
&&&&若将输出格式改为"%0.0lf" 或"%4.0lf"&则输出为1(m!=实际长度)
&&&&顺便说一下,在VC中C语言不支持long long int类型,而在Linux下支持。long long int 也占有8个字节。
阅读(31915) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。

我要回帖

更多关于 c语言中void是什么意思 的文章

 

随机推荐