Fix ByteSize formatting

This commit is contained in:
2023-08-23 01:54:11 +02:00
parent d84d2935ff
commit 27c9970c1a

View File

@@ -57,7 +57,7 @@ namespace openVulkanoCpp
static constexpr std::array<uint64_t, 13> FACTORS = ByteSizeUnitHelper::BuildFactors();
static constexpr std::array<double, 13> DIVISORS = ByteSizeUnitHelper::BuildDivisors();
public:
enum Unit : int { B, kiB, MiB, GiB, TiB, PiB, EiB, kB, MB, GB, TB, PB, EB };
enum Unit : int { B = 0, kiB, MiB, GiB, TiB, PiB, EiB, kB, MB, GB, TB, PB, EB };
constexpr ByteSizeUnit(Unit unit) : unit(unit) {}
@@ -79,7 +79,7 @@ namespace openVulkanoCpp
[[nodiscard]] static constexpr ByteSizeUnit GetClosestUnit(uint64_t size, bool si = false)
{
for (int i = (si ? EB : EiB); i <= (si ? kB : kiB); i--)
for (int i = (si ? EB : EiB); i >= (si ? kB : kiB); i--)
{
if (size > FACTORS[i]) return { static_cast<Unit>(i) };
}
@@ -118,7 +118,7 @@ namespace openVulkanoCpp
{
oss << std::setprecision(3);
auto unit = ByteSizeUnit::GetClosestUnit(bytes, si);
oss << bytes * unit.GetDivisor() << ' ' << unit.GetName();
oss << static_cast<double>(bytes) * unit.GetDivisor() << ' ' << unit.GetName();
return oss;
}