硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2081|回复: 3
收起左侧

[Qt] 1.3乘以10,等于12了。。。。怎么回事?

[复制链接]

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2020-7-21 16:46:46 | 显示全部楼层 |阅读模式
本帖最后由 caicaptain2 于 2020-7-21 16:47 编辑
  1.   QString tempstring="1.3";  
  2. qDebug()<<tempstring.toFloat();  //输出1.3  
  3. qint16  mpint16=10*tempstring.toFloat();   
  4. qDebug()<<tempint16;//输出12 ??!!!
复制代码



回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106826
QQ
发表于 2020-7-21 17:37:34 | 显示全部楼层
直接1.3 * 10测输出结果是否正常,如果正常,那就是toFloat的问题。
回复

使用道具 举报

3

主题

336

回帖

345

积分

高级会员

积分
345
发表于 2020-7-21 20:45:40 | 显示全部楼层
是不精确的。之前我比较版本号的算法里就掉坑里过V1.12和V1.13转换为浮点,再乘以100都是112,导致不能升级。
后来就用乘以1000得到1120和1130就能正确比较了。
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
 楼主| 发表于 2020-7-22 08:43:20 | 显示全部楼层
本帖最后由 caicaptain2 于 2020-7-22 08:55 编辑
glory 发表于 2020-7-21 20:45
是不精确的。之前我比较版本号的算法里就掉坑里过V1.12和V1.13转换为浮点,再乘以100都是112,导致不能升级 ...

我后来在浮点数的结果上加了qRound()后,可以解决。tempint16=qRoung(10*tempstring.toFloat());
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-6 04:32 , Processed in 0.172491 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表