diff --git a/src/base/utils/misc.cpp b/src/base/utils/misc.cpp index 18f06d2d7..7739cd39c 100644 --- a/src/base/utils/misc.cpp +++ b/src/base/utils/misc.cpp @@ -358,12 +358,20 @@ QString Utils::Misc::friendlyUnit(qint64 bytesValue, bool isSpeed) if (unit == SizeUnit::Byte) ret = QString::number(bytesValue) + " " + unitString(unit); else - ret = Utils::String::fromDouble(friendlyVal, 1) + " " + unitString(unit); + ret = Utils::String::fromDouble(friendlyVal, friendlyUnitPrecision(unit)) + " " + unitString(unit); if (isSpeed) ret += QCoreApplication::translate("misc", "/s", "per second"); return ret; } +int Utils::Misc::friendlyUnitPrecision(SizeUnit unit) +{ + // friendlyUnit's number of digits after the decimal point + if (unit <= SizeUnit::MebiByte) return 1; + else if (unit == SizeUnit::GibiByte) return 2; + else return 3; +} + qlonglong Utils::Misc::sizeInBytes(qreal size, Utils::Misc::SizeUnit unit) { for (int i = 0; i < static_cast(unit); ++i) diff --git a/src/base/utils/misc.h b/src/base/utils/misc.h index d0a1c39bb..9a456fd26 100644 --- a/src/base/utils/misc.h +++ b/src/base/utils/misc.h @@ -88,6 +88,7 @@ namespace Utils // value must be given in bytes bool friendlyUnit(qint64 sizeInBytes, qreal& val, SizeUnit& unit); QString friendlyUnit(qint64 bytesValue, bool isSpeed = false); + int friendlyUnitPrecision(SizeUnit unit); qint64 sizeInBytes(qreal size, SizeUnit unit); bool isPreviewable(const QString& extension);