Qt中如何将double数值从指数格式转为尾数形式显示?
Qt中提取科学计数法字符串的小数部分
你的问题核心在于错误地将科学计数法字符串转成了double类型——0.123456e+13对应的数值是12345600000000,double存储的是这个实际数值,而非原始的科学计数法格式,所以后续再怎么格式化都无法得到0.123456。
正确的思路是直接操作原始字符串,提取指数符号(e/E)之前的部分:
实现代码
基础版本
QString s = "0.123456e+13"; // 按'e'分割字符串,取第一部分 QString result = s.split('e').first(); qDebug() << result; // 输出 "0.123456"
兼容大小写版本
如果输入字符串可能包含大写E,可以添加大小写不敏感的分割选项:
QString s = "0.123456E+13"; QString result = s.split('e', Qt::CaseInsensitive).first(); qDebug() << result; // 输出 "0.123456"
补充说明
如果你的输入不是字符串,而是已经存储为double的数值,那无法恢复出0.123456——因为0.123456e+13和12345600000000在double中是完全相同的数值,没有任何额外信息记录它的原始表示格式。
内容的提问来源于stack exchange,提问作者FINN
相关产品推荐
相关产品推荐

