首页 > 解决方案 > 如何从 Float 中删除 .0

问题描述

这是代码:

 private fun setData(playerData: TreeMap<String, String>) {
    val values = ArrayList<Entry>()
    val graphData = java.util.ArrayList<Float>()
    for (value in playerData.values) {
        graphData.add(value.toInt().toFloat()) # <-- converting here
    }
    graphData.reverse()

    for (i in 0 until graphData.size) {

        val itemi = i.toFloat()
        values.add(
            Entry(
                itemi, #<-- entering here directly
                graphData[i],
                resources.getDrawable(R.drawable.ic_cricket)
            )
        )
    }

    val set1: LineDataSet
    set1 = LineDataSet(values, "Player Form Graph")
    val dataSets = ArrayList<ILineDataSet>()
   // Possible Solution?
    val valueFormatter = IValueFormatter { value, _, _, _ ->
        value.toInt().toString()
    }
    set1.valueFormatter = valueFormatter as ValueFormatter?
    dataSets.add(set1)
    val data = LineData(dataSets)
 // set data
    binding.chart1.data = data

}

错误:java.lang.ClassCastException: <id>DemoFragment$setData$valueFormatter$1 cannot be cast to com.github.mikephil.charting.formatter.ValueFormatter

问题是有些值在没有 .0 的情况下有效,有些在 .0 时有效

在此处输入图像描述 在此处输入图像描述

标签: androidmpandroidchart

解决方案


这是我用过的:

set1.valueFormatter = object : ValueFormatter() {
            override fun getFormattedValue(value: Float): String {
                return value.toInt().toString()
            }
        }

如果有可能以十进制形式出现值,比如[1, 1.2, 3, 3.5]你的集合,那么选择:

set1.valueFormatter = object : ValueFormatter() {
            override fun getFormattedValue(value: Float): String {
                return DecimalFormat("#.#").format(value)
            }
        }

如果您想显示最多 2 个小数位等,可以将上述情况#.#替换为。#.##


推荐阅读