首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

下面这两句用下面注释的替换为什么会错,也就是为什么要先转换成 double?该怎么处理

2012-02-29 
下面这两句用下面注释的替换为什么会错,也就是为什么要先转换成 double?#include iostream#include cti

下面这两句用下面注释的替换为什么会错,也就是为什么要先转换成 double?
#include <iostream>
#include <ctime>
#include <string>
using   namespace   std;

int   main()
{

clock_t   CT   =   clock();
char   szTime[64];

                    //   下面这两句用下面注释的替换为什么会错,也就是为什么要先转换成   double?
double   dTime   =   (   double   )CT;
sprintf(   szTime,   "%f ",   dTime   );

//sprintf(szTime, "%l ",CT);       //   为什么不行?
string   csTime(   szTime   );
cout < <csTime.c_str() < <endl;
return   0;
}

[解决办法]
格式划字符串,只要类型对上就okay了
[解决办法]
去找本C语言的书吧。你这么问,效率也太低了。
[解决办法]
对于整数和浮点数,都存在不同精度或者不同取值范围的两种。
例如对于整数,有短整数,整数,长整数;现在长整数和整数都是32位,短整数是16位。即现在长整数和整数的范围是一样的,但是以前的某个系统可能是整数是16位的。

对于浮点数,存在着double和float两种,两者的取值范围和精度不同。

输出整数使用%d,输出长整数是%ld
输出float用%f,输出double使用%lf

既然浮点数是带小数的,那么输出时就带有小数,计算机不管3.0是不是可以不带小数就可以表示。要想使得浮点数输出时不带小数,就要使用格式字符串来控制,例如使用%4.0f。


[解决办法]
%l很多函数库是不支持的,用%ld

热点排行