Usando ValueFormatter en MP Chart pero no está teniendo efecto.
Usando MP Chart en Android. Referencia: https://github.com/PhilJay/MPAndroidChart
Tengo que mostrar 30.8351 como 30.83 en el gráfico de barras.
Así que encontré que podemos hacerlo utilizando el Value Formatter en MP Chart.
He creado una clase para esto de la siguiente manera:
class MyValueFormatter : ValueFormatter() {
override fun getFormattedValue(
value: Float,
entry: Entry,
dataSetIndex: Int,
viewPortHandler: ViewPortHandler
): String {
var mFormat: DecimalFormat = DecimalFormat(“###,###,##0.0″)
return mFormat.format(value) + ” $”
}
}
y luego estableciéndolo en el conjunto de datos de mi gráfico de la siguiente manera:
val set1: BarDataSet
set1.setValueFormatter(MyValueFormatter())
Pero todavía muestra 30.8351 en lugar de 30.83 encima del gráfico de barras, es decir, como un valor de la barra.
¿Cuál podría ser el problema?
EDITAR A CONTINUACIÓN DESPUÉS DE QUE JEEL RESPONDIÓ
Ahora he utilizado el Value Formatter como sigue:
set1.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
var mFormat: DecimalFormat = DecimalFormat(“##.##”)
return mFormat.format(value)
}
}
Pero para el valor -0.594 obtengo -0.6.
Debería ser -0.59 solamente.
Para 1.234 es 1.23 (BIEN).
Pero para 1.235 es 1.24 (NO BIEN): no debería redondear el valor.
¿Cuál podría ser el problema?
davy.ai
El problema está en el DecimalFormat utilizado en el Formateador de Valores. Por defecto, DecimalFormat redondea los valores al dígito más cercano. Para obtener el formato deseado, puedes utilizar el método setRoundingMode() de DecimalFormat y establecerlo en RoundingMode.DOWN.
Por lo tanto, tu Formateador de Valores actualizado debería verse así:
Esto debería funcionar tanto para valores positivos como negativos.