Use SI by default when calculating human-readable sizes

This commit is contained in:
Davide Depau 2018-08-15 18:20:17 +02:00
parent 8c158c8cef
commit 5be34538fb

View file

@ -2,7 +2,7 @@ package eu.depau.ddroid.utils
// https://stackoverflow.com/a/3758880/1124621 // https://stackoverflow.com/a/3758880/1124621
private fun <T> humanReadableByteCount(bytes: T, si: Boolean = false): String where T : Comparable<T>, T : Number { private fun <T> humanReadableByteCount(bytes: T, si: Boolean = true): String where T : Comparable<T>, T : Number {
val unit: Long = if (si) 1000 else 1024 val unit: Long = if (si) 1000 else 1024
if (bytes.toLong() < unit) return String.format("%.2f B", bytes) if (bytes.toLong() < unit) return String.format("%.2f B", bytes)
val exp = (Math.log(bytes.toDouble()) / Math.log(unit.toDouble())).toInt() val exp = (Math.log(bytes.toDouble()) / Math.log(unit.toDouble())).toInt()
@ -10,9 +10,9 @@ private fun <T> humanReadableByteCount(bytes: T, si: Boolean = false): String wh
return String.format("%.2f %sB", bytes.toDouble() / Math.pow(unit.toDouble(), exp.toDouble()), pre) return String.format("%.2f %sB", bytes.toDouble() / Math.pow(unit.toDouble(), exp.toDouble()), pre)
} }
fun Long.toHRSize(si: Boolean = false) = humanReadableByteCount(this, si) fun Long.toHRSize(si: Boolean = true) = humanReadableByteCount(this, si)
fun Float.toHRSize(si: Boolean = false) = humanReadableByteCount(this, si) fun Float.toHRSize(si: Boolean = true) = humanReadableByteCount(this, si)
fun Double.toHRSize(si: Boolean = false) = humanReadableByteCount(this, si) fun Double.toHRSize(si: Boolean = true) = humanReadableByteCount(this, si)
fun Int.toHRSize(si: Boolean = false) = humanReadableByteCount(this, si) fun Int.toHRSize(si: Boolean = true) = humanReadableByteCount(this, si)
fun Byte.toHRSize(si: Boolean = false) = humanReadableByteCount(this, si) fun Byte.toHRSize(si: Boolean = true) = humanReadableByteCount(this, si)
fun Short.toHRSize(si: Boolean = false) = humanReadableByteCount(this, si) fun Short.toHRSize(si: Boolean = true) = humanReadableByteCount(this, si)