• 5853阅读
  • 5回复

如何将long double转换成QString [复制链接]

上一主题 下一主题
离线loopolike
 

只看楼主 倒序阅读 楼主  发表于: 2012-05-22
  现在有些数据比如1E-13这样的数据,我只能存储在long double里面,以前写成C语言的话是很容易转换成char型的字符串的。不如写成以下方式:
long double  fData = 1.24E-13;
char szTemp[50] = {0};
sprintf(szTemp,"%E", fData );
那么得到的szTemp里面存储的就是"1.24E-13"
但是现在的问题是到C++环境下就是得不到这样正确的结果
C++的代码如下:

long double  fData = 1.24E-13;
QString str;
str.sprintf("%E", fData );
然后str里面的东西是乱码,这是怎么回事,请高手解释以下。
我还试过QString::number();  这样的方法也是不正确。
或者有谁能告诉我让我在QT环境下能够用C语言环境的东西,能写C99的东西也是可以解决问题的,谢谢大家啦
离线ppdayz

只看该作者 1楼 发表于: 2012-05-22
回 楼主(loopolike) 的帖子
qt只是一个C++库。记住这点就好了
离线loopolike

只看该作者 2楼 发表于: 2012-05-22
回 1楼(ppdayz) 的帖子
long double  fData = 1.24E-13;
char szTemp[50] = {0};
sprintf(szTemp,"%E", fData );
那么得到的szTemp里面存储的就是"1.24E-13"


这段代码在QT中就不能正确运行,所以我觉得QT是不完全兼容C99环境的
离线ppdayz

只看该作者 3楼 发表于: 2012-05-23
回 2楼(loopolike) 的帖子
qt只是一个C++库。。你完全可以不用qt的东西来编写代码
long double  fData = 1.24E-13;
char szTemp[50] = {0};
sprintf(szTemp,"%E", fData );
这段代码直接写在qt的任何合理的地方都是没问题的。

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    page_main w;
    w.show();

    long double  fData = 1.24E-13;
    char szTemp[50] = {0};
    sprintf(szTemp, "%E", fData );

    return a.exec();
}
完全都是ok的
离线loopolike

只看该作者 4楼 发表于: 2012-05-28
回 3楼(ppdayz) 的帖子
多谢啦
离线xie133
只看该作者 5楼 发表于: 2012-05-30
QSring str("%1").arg(fData);
快速回复
限100 字节
 
上一个 下一个