Fixing kmb formatting

feature/top10
Laurent 7 years ago
parent 8bcfdc8356
commit 30e2b30eb5
  1. 8
      app/src/main/java/net/pokeranalytics/android/ui/graph/AxisFormatter.kt
  2. 7
      app/src/main/java/net/pokeranalytics/android/util/extensions/NumbersExtension.kt
  3. 12
      app/src/test/java/net/pokeranalytics/android/BasicUnitTest.kt

@ -8,11 +8,11 @@ import kotlin.math.roundToInt
class LargeNumberFormatter : ValueFormatter() { class LargeNumberFormatter : ValueFormatter() {
override fun getFormattedValue(value: Float): String { override fun getFormattedValue(value: Float): String {
return value.kmbFormatted return value.kmbFormatted()
} }
override fun getAxisLabel(value: Float, axis: AxisBase?): String { override fun getAxisLabel(value: Float, axis: AxisBase?): String {
return value.roundToInt().kmbFormatted return value.roundToInt().kmbFormatted()
} }
} }
@ -20,11 +20,11 @@ class LargeNumberFormatter : ValueFormatter() {
class HourFormatter : ValueFormatter() { class HourFormatter : ValueFormatter() {
override fun getFormattedValue(value: Float): String { override fun getFormattedValue(value: Float): String {
return value.kmbFormatted + "H" return value.kmbFormatted() + "H"
} }
override fun getAxisLabel(value: Float, axis: AxisBase?): String { override fun getAxisLabel(value: Float, axis: AxisBase?): String {
val test = value.kmbFormatted + "H" val test = value.kmbFormatted() + "H"
return test return test
} }

@ -7,14 +7,15 @@ import java.text.DecimalFormat
import java.text.NumberFormat import java.text.NumberFormat
import java.util.* import java.util.*
val Number.kmbFormatted: String fun Number.kmbFormatted(threshold: Double = 10000.0): String {
get() {
var thousandsExponent = 0 var thousandsExponent = 0
var v = this.toDouble() var v = this.toDouble()
while (abs(v) >= 10000 && thousandsExponent < 3) { if (abs(v) >= threshold) {
while (abs(v) >= 1000 && thousandsExponent < 3) {
v /= 1000 v /= 1000
thousandsExponent++ thousandsExponent++
} }
}
val unit = when (thousandsExponent) { val unit = when (thousandsExponent) {
0 -> "" 0 -> ""

@ -19,13 +19,15 @@ class BasicUnitTest : RealmUnitTest() {
val n3 = n2 * n2 // 1M val n3 = n2 * n2 // 1M
val n4 = n3 * n2 // 1B val n4 = n3 * n2 // 1B
val s1 = n1.kmbFormatted val s1 = n1.kmbFormatted()
val s2 = n2.kmbFormatted val s2 = n2.kmbFormatted()
val s3 = n3.kmbFormatted val s2b = n2.kmbFormatted(1000.0)
val s4 = n4.kmbFormatted val s3 = n3.kmbFormatted()
val s4 = n4.kmbFormatted()
Assert.assertEquals("100", s1) Assert.assertEquals("100", s1)
Assert.assertEquals("1K", s2) // Assert.assertEquals("1/e000", s2) // weird error Expected :1 000, Actual :1 000
Assert.assertEquals("1K", s2b)
Assert.assertEquals("1M", s3) Assert.assertEquals("1M", s3)
Assert.assertEquals("1B", s4) Assert.assertEquals("1B", s4)

Loading…
Cancel
Save