android - 如何从 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 时有效
解决方案
这是我用过的:
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 个小数位等,可以将上述情况#.#
替换为。#.##
推荐阅读
- python - Keras - 具有多个输出和每个输出不同权重的自定义损失函数
- javascript - array.include 是否适用于嵌套对象
- javascript - ChartJS:在 y 轴上带有标签的折线图
- kotlin - 通过 Kotlin 中任意集合的排列逐步迭代
- dependency-injection - 如何在运行时解析参数化类?
- flutter - App被杀死时如何保存更改?
- c# - 我需要在 c#winform 应用程序中跟踪赛道,我可以在上面添加和移动点,但找不到任何教程
- javascript - C# 的 JSON 结果不适用于 Chart.js
- node.js - 续集,检查行是否存在并返回布尔值
- regex - PowerShell如何在特定模式之后捕获文本字符串但不将模式本身包含在结果中