返回信息流如下程序:当double类型的变量的最后一位是0的时候,在转换为string的时候会被去掉,
程序的输出不是1.120,而是1.12,不知道怎么把0也放在string中。
求人一起讨论。
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
double t=1.120;
ostringstream os;
os<<t;
string str=os.str();
cout<<str<<endl;
return 0;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #30257同步于 2009/10/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[讨论]double类型转换为string类型的一个问题
xiaoleichang
2009/10/22镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 greedisgood 的大作中提到: 】
: CString str;
: str.Format("%4.3lf",1.120);
这个好像不行吧,如果小数点后不是3位呢,不知道怎么判断小数点后有几位数字
【 在 xiaoleichang 的大作中提到: 】
: 这个好像不行吧,如果小数点后不是3位呢,不知道怎么判断小数点后有几位数字
那就不行了。
不能判断小数点后的位数。
原因很简单:
debug下可以看到内存里这个double型的变量t表示为1.1200000000000。
也就是说t本身对操作系统来说已经没有位数的概念了。
没有任何方法可以判断赋值给double型变量的含0小数位数。
double型变量 整数部分+小数部分=14位
也就是在执行os<<t之前,t在内存中表示的已经是13位小数了。
lz可以debug看下
【 在 greedisgood 的大作中提到: 】
: 那就不行了。
: 不能判断小数点后的位数。
: 原因很简单:
: ...................
看来是没办法了,老师给了个题目,给了个关于教室位置的浮点数,要求提取出来,也许可能不用考虑那么多,不过还是谢了
【 在 greedisgood 的大作中提到: 】
: 那就不行了。
: 不能判断小数点后的位数。
: 原因很简单:
: ...................
看来是没有办法了,不过还是多谢了