算术溢出要怎么改啊不懂

double ExpressionTree::Compute()
{
return ComputeHelp(root);
}
double ExpressionTree::ComputeHelp(BTNode* r)
{
double lvalue, rvalue, value{};
if (r->lchild == NULL && r->rchild == NULL)
return r->data - '0';算术溢出: 使用 4 字节值上的运算符 - ,然后将结果转换到 8 字节值。在调用运算符 - 之前将值强制转换为宽类型可避免溢出(io.2)。
else
{
lvalue = ComputeHelp(r->lchild);
rvalue = ComputeHelp(r->rchild);
switch (r->data)
{
case'+':
value = lvalue + rvalue;
break;
case '-':
value = lvalue - rvalue;
break;
case'*':
value = lvalue * rvalue;
break;
case'/':
value = lvalue / rvalue;
break;
}
return value;
}
}