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
- Qt中double精度设置
- Qt - double转换QString, 并设置精度
- 对于double的精度设置
- double类型精度问题格式设置
- double 精度
- double精度
- double 精度
- Java 中double变量的精度计算
- Java中float和double精度
- JAVA中double类型计算精度控制
- Java中double的精度问题
- java中Double类型精度问题
- java 中double的精度问题
- Java中double类型精度丢失问题
- java中float,double的精度问题
- Java中Double类型的运算精度
- java中double计算精度问题
- c语言中,double精度数
- 去除LIST中的重复对象
- 银联pinBlock加密算法的实现
- Swift将图片保存到沙盒下
- OpenCV进行图像相似度对比的几种办法
- OKhttp3 get/post使用及获取网页源代码
- Qt中double精度设置
- 详述 Java 中过滤器 Filter 的工作原理及使用方法
- socket网络传输大文件
- Android 开发框架xUtils3
- Android API官方文档 输入控件
- iOS蓝牙开发连接系统或其他APP已经连接、配对成功的蓝牙设备
- (转)Android高仿微信表情输入与键盘输入(详细实现分析)
- 24天学会设计模式------工厂方法模式
- 苹果公司开发者账号申请