Qt-关于QString转换为浮点值的精度丢失解决方法

关于QString转换为Float精度就是问题

前言

在实际编写上位机时候,需要通过界面填入电流值,精度为0.1,最后将用户输入的值乘上10,然后组帧发送,在使用过程中,遇到件怪事,输入21.4,转换后为213,输入21.3,也转换为213,输入其它值,又会正确,于是我纳闷了!!

示例如下:

当我输入以下代码,运行程序后,输入字符串:21.4,转换为浮点值后,再乘10,应为:214,但是打印出问:213

    QString strLineEdit = ui->lineEdit->text();
    quint16 num;
    num = quint16 (strLineEdit.toFloat()*10);
    qDebug()<<"======num is:"<<num;

在这里插入图片描述
于是,我就感觉很奇怪,当我输入:21.6时,就没有问题。
在这里插入图片描述

解决:

后面,想到转换为浮点值,肯定会有精度损失,在使用QString转float时,结果float会被增加或者较少精度,于是我添加了一个强制转换。解决了问题。

    //QString strLineEdit = ui->lineEdit->text(); 不使用

    //精确小数点后1位,如果有特殊要求,修改其后面数字即可
    QString strLineEdit = QString::number(ui->lineEdit->text().toFloat()*10,'f',1);

    quint16 num;
    num = quint16 (strLineEdit.toFloat());
    qDebug()<<"======num is:"<<num;

在这里插入图片描述

最后:

遇到问题很正常,慢慢就解决了。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值