首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • VC++ 类型转换问题? [已结帖,结帖人:zhongglie]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhongglie
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-08-21 21:20:40 楼主
    我编一个读取文本里数据的程序,先定义了一个字符串。读取数据结果是对的,但是我将其转为float型时结果不是我想要的
    比如:
    定义:CString Str;
    Str="0.1234";
    float m_data;
    m_data=(float)atof(Str);
    我想要的转换结果是
    m_data=0.1234
    但是不论Str的值如何,m_data的值都是0.1000000
    这是为什么?
    能不能得到我想要的结果?
    请各位帮帮忙,刚学vc++,不太懂。
    30  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • akirya
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 6

    发表于:2008-08-21 21:30:021楼 得分:0
    atof改为_ttof
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • rockti
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 21:59:512楼 得分:3
    不是类型转换的问题,0.1234不会造成精度损。建议从其他地方查找原因,不行单步一下,看下值的变化。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • petra1218
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 08:12:343楼 得分:3
    可以用stringstream来转换
    C/C++ code
    std::stringstream ss; ss << "0.1234"; float f; ss >> f;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jdifjoifj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 08:39:394楼 得分:3
    这个问题我以前也接触过,开始的时候我也找不到问题的原因,后来我进了一个技术交

    流群,这个群里的人挺多的,在里面可以沟通技术,你可以进去看一下.群号是:四+三+

    四+八+零+零+七+一。另外,这个群里可以接项目。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shanying_0
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 08:40:175楼 得分:3
    double atof(
        const char *string
    );

    用的没有错呀。可能是你其他的地方的问题
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fbmsyu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 09:10:146楼 得分:3
    引用 3 楼 petra1218 的回复:
    可以用stringstream来转换

    C/C++ code
    std::stringstream ss;
    ss < < "0.1234";
    float f;
    ss >> f;


    支持.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lygfqy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 09:53:217楼 得分:3
    单步调试一下吧
    看看是你的程序那个地方定义的有问题
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yyunffu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 10:17:058楼 得分:3
    这样:
    CString Str;
    Str="0.1234";
    float m_data;
    m_data=(float)_tcstod(Str,NULL);
    应该没有问题。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhkefa
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 10:17:169楼 得分:3
    调试了下好像没什么错,要不用stringstream也可以,
    C/C++ code
    #include <iostream> #include <sstream> using namespace std; int main() { string str = "0.1234"; float f; f = atof(str.c_str()); cout << f << endl; stringstream ss; ss << "0.12345"; ss >> f; cout << f << endl; return 0; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yyunffu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 10:22:4410楼 得分:3
    按理说这程序没有问题,自己调试一下吧,可能程序其他地方有问题,单看类型转换,各个方式都没有问题。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • haodingdang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 11:30:5111楼 得分:0
    你的程序没有问题,要不你重新建立一个程序,再试试,可能是其它问题引起的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bitxinhai
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 11:42:0912楼 得分:3
    m_data=(float)atof(Str.GetBuffer(0));
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lemon_wei
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 11:50:5513楼 得分:0
    在vc6 和 gcc里面都试了,没有楼主所说的问题,都是输出 0.123400
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhongglie
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 11:58:0214楼 得分:0
    问题解决了,谢谢各位。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved