• 15306阅读
  • 6回复

Qt4下如何把double类型的小数只精确到小数点后第一位? [复制链接]

上一主题 下一主题
离线goonman
 

只看楼主 正序阅读 楼主  发表于: 2009-12-15
我现在界面需要显示一个采集到的,不停变换的dobule型数据,数据区间-100--100,但是得到的数据是精确到小数点后4位,现在我希望显示的这个数据只精确到小数点后1位,请问应该怎么处理呢,谢谢!!
离线solin
只看该作者 6楼 发表于: 2010-02-23
QString QString::arg ( QChar a, int fieldwidth = 0 ) const
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
QString QString::arg ( double a, int fieldwidth = 0, char fmt = 'g', int prec = -1 ) const
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

根据fmt指定的格式,参数a被格式化,g为默认情况并且可以为下列之一:


e - 格式化为[-]9.9e[+|-]999
E - 格式化为[-]9.9E[+|-]999
f - 格式化为[-]9.9
g - 使用e或f格式,看哪一个更简练
G - 使用E或f格式,看哪一个更简练
在所有的情况下,小数点之后数字的个数等于prec指定的精度。


    double d = 12.34;
    QString ds = QString( "'E' format, precision 3, gives %1" )
                 .arg( d, 0, 'E', 3 );
    // ds == "1.234E+001"
离线XChinux

只看该作者 5楼 发表于: 2010-02-23
double fValue = 8.3343
QString strValue = QString::number(fValue, 'f', 1);
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线solin
只看该作者 4楼 发表于: 2010-02-23
可以举例吗?谢谢了
离线dbzhang800

只看该作者 3楼 发表于: 2009-12-16
QString 至少提供了3个可以实现这个功能的成员函数, arg、number、sprintf

除此之外,C、C++标准库中的 snprintf, sprintf, stringstream 等也都可以实现这个功能
离线goonman

只看该作者 2楼 发表于: 2009-12-16
谢谢您,如果用void QString::setLength ( int nl )函数可以设置字符串的长度,可是小数点左边有时是1位,有时是2位,小数点后面只希望有1位,不知道怎么解决方便点。
离线dbzhang800

只看该作者 1楼 发表于: 2009-12-15
看manual,QString
快速回复
限100 字节
 
上一个 下一个