之前出现过QString.toDouble()非0数据转换成0的情况,具体情况忘记了,所以自己写了个转换。
仅供参考。
1、原理
就是支持科学计算法的double,提取成系数和科学计算的形式,自己计算。
比如123456e20的字符串,提取出来就是1.23456(系数)*10^25;这个25就是提取出来的幂。
double stringToDouble(const QString &value)
{
double factor;
int powint;
if (parseDoubleString(value, factor, powint)) {
return factor * pow(10, powint);
} else {
return 0;
}
}
bool parseDoubleString(const QString &valueStr, double &factor, int &pow)
{
factor = 0;
pow = 0;
double minVal = DOUBLE_MIN;
bool minCanEqual = false;
double maxVal = DOUBLE_MAX;
bool maxCanEqual = false;
bool overtransrange = false;
if (valueStr.contains("e", Qt::CaseInsensitive)) {
QString splitSymbol = "e";
if (valueStr.contains("E", Qt::CaseSensitive)) {
splitSymbol =