字符串转为double,代码的问题

kangnixi 2010-01-26 04:47:51
我是新手,有 个问题

1、我新建一个Win32 Console Application工程,里面的代码看不懂,希望一句一句详细注释,解释下,谢谢了。

2、刚开始,我的代码里面没有
cout.precision(100);
cout<<std:: showpoint<<d_num<<endl;
直接是:cout<<d_num<<endl;
输出的是1234,而不是1234.0000这种形式的数字
为什么额?

3、我使用了,
cout.precision(100);
cout<<std:: showpoint<<d_num<<endl;
后,随意变更precision()里面的数字,小数点后面的0可以随意增多减少,
对于这点,我很困惑,记得看书的时候说,double,小数点后,应该是13位,可照这样看来,可以任意位数?

4、
cout.precision(100);
cout<<std:: showpoint<<d_num<<endl;
其实,这两句话,我是不明白的。Google了下,也没能完全懂。
同时我试验了int,貌似是说,只能给浮点数显示?不知道这样理解对不对

代码如下:

// Hello.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "Hello.h"
#include <iostream>
using namespace std;

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// The one and only application object

CWinApp theApp;

using namespace std;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;

// initialize MFC and print and error on failure, Leave the code here would be OK.
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
else
{
// TODO: code your application's behavior here.
CString strHello = "Hello kangnixi";
//strHello.LoadString(IDS_HELLO); I will press F5 to debug.? seen>?
cout << (LPCTSTR)strHello << endl;
CString ting1="1234";
int i_num=atoi(ting1);
cout.precision(20);
cout<<std:: showpoint<<i_num<<endl;

CString ting2="1234";
double d_num=atof(ting2);
cout.precision(100);
cout<<std:: showpoint<<d_num<<endl;
}
return nRetCode;
}
...全文
314 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovesi3344 2010-01-26
  • 打赏
  • 举报
回复
我来晚了

闻道有先后
树叶有专攻

我对这个问题很有研究的
可惜晚了
cattycat 2010-01-26
  • 打赏
  • 举报
回复
precision表示精度,控制位数的。
kangnixi 2010-01-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 pur_e 的回复:]
引用 7 楼 kangnixi 的回复:
引用 4 楼 pur_e 的回复:
过来抢下分
1、找本书看,先从基础学起,顶1楼
//基本的C++语句是懂得,我C++也看了两三本书了。。。。
//关键是建立的这个MFC工程,初始的代码不懂呀。。。
2、cout是一个类对象,重载了 < <操作符,也就是说 < <操作其实是函数,而你用
cout.precision(100);
cout < <std:: showpoint
这两个,告诉了cout,显示小数,以及显示几位
3、你把显示的位数和精确度搞混了
4、cout规定只能给浮点数显示小数,如果你自己写一个myCout,可以定义整数也可以显示小数
就和微软规定单击选中,双击打开一样
//关键问题。。。。如果没有cout.precision(100);
cout < <std:: showpoint
那个浮点数根本不显示小数点后面的位数,这是为什么呢?




1、看一下MFC的书,基本的懂的话,看一下进阶,MFC的书介绍的都很详细的
2、不是不显示,如果后面小数都是0,默认是不显示的,如果不是0,默认最多显示6位
[/Quote]

明白了,thanks了,今天别人刚给我建的MFC工程,额,还没看MFC相关的东西
有点对环境不熟,现在看那个代码看多了,而且看了刚别人给的解释,明白了。
kangnixi 2010-01-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 pur_e 的回复:]
引用 7 楼 kangnixi 的回复:
引用 4 楼 pur_e 的回复:
过来抢下分
1、找本书看,先从基础学起,顶1楼
//基本的C++语句是懂得,我C++也看了两三本书了。。。。
//关键是建立的这个MFC工程,初始的代码不懂呀。。。
2、cout是一个类对象,重载了 < <操作符,也就是说 < <操作其实是函数,而你用
cout.precision(100);
cout < <std:: showpoint
这两个,告诉了cout,显示小数,以及显示几位
3、你把显示的位数和精确度搞混了
4、cout规定只能给浮点数显示小数,如果你自己写一个myCout,可以定义整数也可以显示小数
就和微软规定单击选中,双击打开一样
//关键问题。。。。如果没有cout.precision(100);
cout < <std:: showpoint
那个浮点数根本不显示小数点后面的位数,这是为什么呢?




1、看一下MFC的书,基本的懂的话,看一下进阶,MFC的书介绍的都很详细的
2、不是不显示,如果后面小数都是0,默认是不显示的,如果不是0,默认最多显示6位
[/Quote]

试了下,默认显示的6位,是包括前面的小数点的位数么?
kangnixi 2010-01-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 stardust20 的回复:]
//关键问题。。。。如果没有cout.precision(100);
cout < <std:: showpoint
那个浮点数根本不显示小数点后面的位数,这是为什么呢?

试了下可以显示啊。。不过是win32控制台程序。。
[/Quote]

额,我的不能显示额。。。。要不要截图给你看看?

pur_e 2010-01-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 kangnixi 的回复:]
引用 4 楼 pur_e 的回复:
过来抢下分
1、找本书看,先从基础学起,顶1楼
//基本的C++语句是懂得,我C++也看了两三本书了。。。。
//关键是建立的这个MFC工程,初始的代码不懂呀。。。
2、cout是一个类对象,重载了 < <操作符,也就是说 < <操作其实是函数,而你用
cout.precision(100);
cout < <std:: showpoint
这两个,告诉了cout,显示小数,以及显示几位
3、你把显示的位数和精确度搞混了
4、cout规定只能给浮点数显示小数,如果你自己写一个myCout,可以定义整数也可以显示小数
就和微软规定单击选中,双击打开一样
//关键问题。。。。如果没有cout.precision(100);
cout < <std:: showpoint
那个浮点数根本不显示小数点后面的位数,这是为什么呢?


[/Quote]

1、看一下MFC的书,基本的懂的话,看一下进阶,MFC的书介绍的都很详细的
2、不是不显示,如果后面小数都是0,默认是不显示的,如果不是0,默认最多显示6位
kangnixi 2010-01-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xylicon 的回复:]
showpoint标志是强制显示小数点

precision就是精度,表示输出多少小数位。

[/Quote]

疑问,为什么说强制?

可是我用在int型的数上,他为什么不显示?
应该说:给浮点数显示小数点和尾部的0
这样比较准确吧?

precision一样,对int的输出没有任何效果,觉得解释的不准确
stardust20 2010-01-26
  • 打赏
  • 举报
回复
//关键问题。。。。如果没有cout.precision(100);
cout < <std:: showpoint
那个浮点数根本不显示小数点后面的位数,这是为什么呢?

试了下可以显示啊。。不过是win32控制台程序。。
_JeffreyWu 2010-01-26
  • 打赏
  • 举报
回复
给分

// 定义应用程序对象
CWinApp theApp;

// 使用标准命名空间
using namespace std;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
// 定义返回码
int nRetCode = 0;

// 用于MFC初始化
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
else
{
// 定义一个字符串变量
CString strHello = "Hello kangnixi";
// 输出
cout << (LPCTSTR)strHello << endl;
// 定义字符串变量
CString ting1="1234";
// 把字符串转化为整型
int i_num=atoi(ting1);
// 设置有效数字位数
cout.precision(20);
// 输出
cout<<std:: showpoint<<i_num<<endl;

// 字符串转符点型
CString ting2="1234";
double d_num=atof(ting2);

// 有效位数100
cout.precision(100);
// 输出
cout<<std:: showpoint<<d_num<<endl;
}
return nRetCode;
}
kangnixi 2010-01-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pur_e 的回复:]
过来抢下分
1、找本书看,先从基础学起,顶1楼
//基本的C++语句是懂得,我C++也看了两三本书了。。。。
//关键是建立的这个MFC工程,初始的代码不懂呀。。。

2、cout是一个类对象,重载了 < <操作符,也就是说 < <操作其实是函数,而你用
cout.precision(100);
cout < <std:: showpoint
这两个,告诉了cout,显示小数,以及显示几位
3、你把显示的位数和精确度搞混了
4、cout规定只能给浮点数显示小数,如果你自己写一个myCout,可以定义整数也可以显示小数
就和微软规定单击选中,双击打开一样
//关键问题。。。。如果没有cout.precision(100);
cout < <std:: showpoint
那个浮点数根本不显示小数点后面的位数,这是为什么呢?


[/Quote]
xylicon 2010-01-26
  • 打赏
  • 举报
回复
showpoint标志是强制显示小数点

precision就是精度,表示输出多少小数位。

kangnixi 2010-01-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 traceless 的回复:]
LZ 平地高楼不是从第二层筑建的。。。
[/Quote]

啊?没懂你的意思

是不是说我问题顺序错误了?

额,是的话,我改,下次提问,就按先后顺序提
pur_e 2010-01-26
  • 打赏
  • 举报
回复
过来抢下分
1、找本书看,先从基础学起,顶1楼

2、cout是一个类对象,重载了<<操作符,也就是说<<操作其实是函数,而你用
cout.precision(100);
cout < <std:: showpoint
这两个,告诉了cout,显示小数,以及显示几位

3、你把显示的位数和精确度搞混了

4、cout规定只能给浮点数显示小数,如果你自己写一个myCout,可以定义整数也可以显示小数
就和微软规定单击选中,双击打开一样
traceless 2010-01-26
  • 打赏
  • 举报
回复
sigh~~ 主要是这句 希望一句一句详细注释。。。
healer_kx 2010-01-26
  • 打赏
  • 举报
回复
std::showpoint
顾名思义,显示小数点呗,先占座。~~~~
traceless 2010-01-26
  • 打赏
  • 举报
回复
LZ 平地高楼不是从第二层筑建的。。。

64,636

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧