一般情况下,QString toDouble是满足使用需求的。
不过也存在QString toDouble后,因为精度问题,会造成加减乘除、比较时,有时候因精度丢失,导致不准确。
现在把需要处理的double 放大10的N次方后,变成整数后,再进行相加相减处理,然后再缩小10的N次方倍。
代码如下:
//获取小数位
int getDecimalNum(QString str)
{
int n = str.indexOf(".");
if(n < 0)
{
n=0;
}
else
{
n = str.length()-n-1;
}
return n;
}
//获取放大后的字符串
QString getZoomIn(QString str,int n)
{
QString zoomStr;
int index = str.indexOf(".");
if(index < 0)
{
index=0;
zoomStr = str;
}
else
{
zoomStr+= str.left(index);
index = str.length()-index-1;
zoomStr += str.right(index);
}
for(int i=0; i < (n - index); i++)
zoomStr+="0";
return zoomStr;
};
//获取缩小后的字符串
QString getZoomOut(QString str,int n)
{
if(str.isEmpty())
return "";
QString zoomStr = str;
if(str.left(1) == "-")
{
zoomStr.remove(0,1);
}
if(

本文介绍如何通过调整字符串处理方法,避免QString.toDouble精度损失,通过放大和缩小数字来确保加减乘除运算的准确性。涉及getDecimalNum, getZoomIn, getZoomOut等函数实现和实例应用。

6023

被折叠的 条评论
为什么被折叠?



