QString toDouble精度问题

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

一般情况下,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(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值