Fix HR size formatting issues

This commit is contained in:
Davide Depau 2018-08-17 22:10:02 +02:00
parent a177fa68d4
commit 22bb94fc1c
Signed by: depau
GPG key ID: C7D999B6A55EFE86

View file

@ -4,10 +4,10 @@ package eu.depau.etchdroid.kotlin_exts
private fun <T> humanReadableByteCount(bytes: T, si: Boolean = true): String where T : Comparable<T>, T : Number {
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("%.1f B", bytes.toDouble())
val exp = (Math.log(bytes.toDouble()) / Math.log(unit.toDouble())).toInt()
val pre = (if (si) "kMGTPE" else "KMGTPE")[exp - 1] + if (si) "" else "i"
return String.format("%.2f %sB", bytes.toDouble() / Math.pow(unit.toDouble(), exp.toDouble()), pre)
return String.format("%.1f %sB", bytes.toDouble() / Math.pow(unit.toDouble(), exp.toDouble()), pre)
}
fun Long.toHRSize(si: Boolean = true) = humanReadableByteCount(this, si)