Qt中double精度设置

来源:互联网 发布:广州网络布线工程 编辑:程序博客网 时间:2024/05/17 07:25

首先给出一个场景:我们编写了一个Qt界面,然后需要输入一个double值,最后要从文件中写出来。

所面临的问题:要保证用户输入的值是Double类型,并且保证输出的精度和用户的一致。

解决办法:最简单的一种方法是利用QInputDialog,获取一个double,然后在lineEdit中显示,最后保存到文件中。

  • 界面:

    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

  • 代码如下:

    //获取数字    number = QInputDialog::getDouble(this,"Get Number","Double",0,0,20000,10);    //显示    ui->lineEdit->setText(QString::number(number));    //保存到文件    QFile project_file("demo.txt");    if(!project_file.open(QIODevice::WriteOnly))    {        return;    }    QTextStream in(&project_file);    in<<number<<"\r\n";    project_file.close();

问题解析:根据上述的实验不难发现,最终用户输入的值并没有正常显示在lineEdit上,并且在文件中也有精度损失。
经过代码检查,整个过程中可能导致精度损失有两个地方。
第一个是QString::number()函数,打开Qt的帮助文档:
这里写图片描述
这里写图片描述
大致意思是解释number的参数的意思。
可以发现其默认的精度和我们在getDouble中的精度不一致,需要在这里修改代码保证精度。

第二个是在文件输出部分,我查阅QTextStream文档,发现如下:
这里写图片描述
setRealNumberNotation是设置double的表现形式,setRealNumberPrecision是设置double的精度。
这里写图片描述
发现这里默认的精度和我们在getDouble中设置的精度也不一样,也需要修改。

修改代码

    //获取数字    number = QInputDialog::getDouble(this,"Get Number","Double",0,0,20000,10);    //显示    ui->lineEdit->setText(QString::number(number,'f',10));    //保存到文件    QFile project_file("demo.txt");    if(!project_file.open(QIODevice::WriteOnly))    {        return;    }    QTextStream in(&project_file);    in.setRealNumberNotation(QTextStream::FixedNotation);    in.setRealNumberPrecision(10);    in<<number<<"\r\n";    project_file.close();

总结:
如果遇到问题就要多翻翻Qt的帮助文档,仔细看总会有收获的。

7 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 2个月吃母乳婴儿缺钙怎么办 月经期接吻水多怎么办 4岁宝宝晚上尿多怎么办 2岁宝宝晚上尿多怎么办 3岁宝宝晚上尿多怎么办 宝宝拉肚子拉绿色的屎怎么办 婴儿吃奶粉大便干燥怎么办 母乳宝宝不拉大便怎么办 我儿子8岁拉肚子怎么办 1岁宝宝经常便秘怎么办 两个月宝宝拉水怎么办 宝宝吃奶粉上火便秘怎么办 20多天的宝宝便秘怎么办 宝宝五十天消化不良不拉屎怎么办 一周七个月宝宝消化不良拉屎怎么办 孩子总是消化不良拉屎不成型怎么办 一岁宝宝长牙慢怎么办 一岁宝宝不喝水怎么办 七个月的宝宝咳嗽怎么办 怀孕七个月感冒了怎么办 苹果汁弄到白色衣服怎么办 宝宝大便干燥拉不出来怎么办 婴儿吃过青菜米粉呕吐怎么办 50天宝宝便秘5天怎么办 8个月婴幼儿便秘怎么办 1个月婴幼儿便秘怎么办 榨汁后的苹果渣怎么办 宝宝6个月后容易生病怎么办 婴儿头型睡偏了怎么办 6个月婴儿不吃奶怎么办 宝宝秋季腹泻反复发烧怎么办 纯甄过期一个月怎么办 四个月宝宝不吃奶瓶怎么办 四个月宝宝不吃奶粉怎么办 婴儿三四天不大便怎么办 婴儿几天不拉大便怎么办 新生儿6天不拉屎怎么办 孩子10天不大便怎么办 宝宝5天没拉屎怎么办 小孩4-5天不大便怎么办 三个月宝宝睡前哭闹厉害怎么办