From 6175c3cde5411aafcceb06a3ffe06f1e1b206c13 Mon Sep 17 00:00:00 2001 From: Aditya Kulkarni Date: Wed, 21 Nov 2018 14:17:11 -0800 Subject: [PATCH] Prevent rounding for small amounts --- src/balancestablemodel.cpp | 9 ++++----- src/balancestablemodel.h | 4 ++-- src/rpc.cpp | 6 +++--- src/sendtab.cpp | 2 +- src/turnstile.cpp | 2 -- 5 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/balancestablemodel.cpp b/src/balancestablemodel.cpp index b8825da..a9ca0aa 100644 --- a/src/balancestablemodel.cpp +++ b/src/balancestablemodel.cpp @@ -20,9 +20,9 @@ void BalancesTableModel::setNewData(const QMap* balances, // Process the address balances into a list delete modeldata; - modeldata = new QList>(); + modeldata = new QList>(); std::for_each(balances->keyBegin(), balances->keyEnd(), [=] (auto keyIt) { - modeldata->push_back(std::make_tuple(keyIt, QString::number(balances->value(keyIt), 'g', 8))); + modeldata->push_back(std::make_tuple(keyIt, balances->value(keyIt))); }); // And then update the data @@ -85,7 +85,7 @@ QVariant BalancesTableModel::data(const QModelIndex &index, int role) const if (role == Qt::DisplayRole) { switch (index.column()) { case 0: return std::get<0>(modeldata->at(index.row())); - case 1: return Settings::getZECDisplayFormat(std::get<1>(modeldata->at(index.row())).toDouble()); + case 1: return Settings::getZECDisplayFormat(std::get<1>(modeldata->at(index.row()))); } } @@ -93,8 +93,7 @@ QVariant BalancesTableModel::data(const QModelIndex &index, int role) const switch (index.column()) { case 0: return std::get<0>(modeldata->at(index.row())); case 1: { - auto bal = std::get<1>(modeldata->at(index.row())).toDouble(); - return Settings::getUSDFormat(bal); + return Settings::getUSDFormat(std::get<1>(modeldata->at(index.row()))); } } } diff --git a/src/balancestablemodel.h b/src/balancestablemodel.h index bcaa5d7..3ad3550 100644 --- a/src/balancestablemodel.h +++ b/src/balancestablemodel.h @@ -25,8 +25,8 @@ public: QVariant headerData(int section, Qt::Orientation orientation, int role) const; private: - QList>* modeldata = nullptr; - QList* utxos = nullptr; + QList>* modeldata = nullptr; + QList* utxos = nullptr; bool loading = true; }; diff --git a/src/rpc.cpp b/src/rpc.cpp index 91dfca6..0ef8b17 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -317,7 +317,7 @@ void RPC::fillTxJsonParams(json& params, Tx tx) { // Construct the JSON params json rec = json::object(); rec["address"] = toAddr.addr.toStdString(); - rec["amount"] = QString::number(toAddr.amount, 'f', 8).toDouble(); // Force it through string for rounding + rec["amount"] = toAddr.amount; if (toAddr.addr.startsWith("z") && !toAddr.encodedMemo.trimmed().isEmpty()) rec["memo"] = toAddr.encodedMemo.toStdString(); @@ -331,7 +331,7 @@ void RPC::fillTxJsonParams(json& params, Tx tx) { // Add fees if custom fees are allowed. if (Settings::getInstance()->getAllowCustomFees()) { params.push_back(1); // minconf - params.push_back(QString::number(tx.fee, 'f', 8).toDouble()); + params.push_back(tx.fee); } } @@ -660,7 +660,7 @@ bool RPC::processUnspent(const json& reply) { utxos->push_back( UnspentOutput{ qsAddr, QString::fromStdString(it["txid"]), - QString::number(it["amount"].get(), 'g', 8), + Settings::getDecimalString(it["amount"].get()), (int)confirmations, it["spendable"].get() }); (*allBalances)[qsAddr] = (*allBalances)[qsAddr] + it["amount"].get(); diff --git a/src/sendtab.cpp b/src/sendtab.cpp index 9adb828..dc3366b 100644 --- a/src/sendtab.cpp +++ b/src/sendtab.cpp @@ -357,7 +357,7 @@ void MainWindow::maxAmountChecked(int checked) { auto maxamount = rpc->getAllBalances()->value(addr) - sumAllAmounts; maxamount = (maxamount < 0) ? 0 : maxamount; - ui->Amount1->setText(QString::number(maxamount, 'g', 8)); + ui->Amount1->setText(Settings::getDecimalString(maxamount)); } else if (checked == Qt::Unchecked) { // Just remove the readonly part, don't change the content ui->Amount1->setReadOnly(false); diff --git a/src/turnstile.cpp b/src/turnstile.cpp index c1fcb86..b358c27 100644 --- a/src/turnstile.cpp +++ b/src/turnstile.cpp @@ -169,8 +169,6 @@ QList Turnstile::splitAmount(double amount, int parts) { // Add the Tx fees sumofparts += amounts.size() * Settings::getMinerFee(); - //qDebug() << QString::number(sumofparts, 'f', 8) << QString::number(amount, 'f', 8); - //Q_ASSERT(QString::number(sumofparts, 'f', 8) == QString::number(amount, 'f', 8)); return amounts; }