保留两位小数的问题。输入一个数,输出却溢出

C语言 码拜 9年前 (2016-04-13) 1014次浏览
保留两位小数的问题。输入一个数,输出却溢出
解决方案

5

%f -> float
%lf -> double

10

输入改成scanf(“%lf”, &a);
输出随意。

6

你sizeof(float)和sizeof(double)看一下,是不是4字节和8字节
假如是的话,你假如用scanf(“%f”, &a);那么a这个double变量只被写入了4字节的数据
输出的时候自然就输出一坨垃圾值了

4

“%f” 对应 float
%lf 对应 double

2

printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。

1

1楼正解,很多刚开始学者用double时都按照%f来用,其实是lf,注意是L不是数字1

1

题主可以看一下不同变量类型所占的内存大小的区别,还是有点用的

20

引用:
Quote: 引用:

你sizeof(float)和sizeof(double)看一下,是不是4字节和8字节
假如是的话,你假如用scanf(“%f”, &a);那么a这个double变量只被写入了4字节的数据
输出的时候自然就输出一坨垃圾值了

也就是说11输入时实际只有一部分。那11具体占多大内存,怎么看,然后选择合适的类型?

你定义的double无论在64位还是32位系统都占8B=8*8b

1

输入改成scanf(“%lf”, &a);
输出随意。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明保留两位小数的问题。输入一个数,输出却溢出
喜欢 (0)
[1034331897@qq.com]
分享 (0)