如何在 Kotlin 中减少来自 API 的传入多位十进制数的位数?
How do I reduce the digits of an incoming multi-digit decimal number from API in Kotlin?
我从 API 中获取价格值,但它是一个多位数的十进制数,例如 0.4785835398457。我想将此数字减少到 3 或 4 位数字,如 0.3234,我在 TextView 中显示该值。所以首先,我必须形成这个值,其次我需要将它转换为字符串。我在 RecyclerAdapter 的 onBindViewHolder 部分尝试了 DecimalFormat 方法。
override fun onBindViewHolder(holder: CoinListViewHolder, position: Int) {
val df = DecimalFormat("#.###")
df.roundingMode= RoundingMode.CEILING //<-----Here
df.format(coinList[position].price_usd.also { holder.itemView.coinPrice.text = it.toString() }) // <----- And here
holder.itemView.coinTicker.text= coinList[position].asset_id
holder.itemView.setOnClickListener {
listener.onItemClick(coinList, position)
}
但是没有用。请帮我。
提前致谢。
您可以只使用一个字符串格式化程序,它使用您想要的小数位数:
val number = 123.12345
"%.3f".format(number).run(::println)
>> 123.123
这基本上是将浮点值 (f
) 转换为字符串,转换为三位有效数字 (.3
)。格式规范是 here,但有点复杂。
就您的代码而言,这:
df.format(coinList[position].price_usd.also { holder.itemView.coinPrice.text = it.toString() })
相当于:
val price = coinList[position].price_usd
holder.itemView.coinPrice.text = price.toString()
df.format(price)
我假设你想格式化价格然后然后在TextView
中显示它(现在你只是格式化它而不对结果),这将是这样的:
df.format(coinList[position].price_usd)
.let { holder.itemView.coinPrice.text = it.toString() }
即做格式,然后用结果
做this
尝试holder.itemView.coinPrice.text = df.format(coinList[position].price_usd)
我从 API 中获取价格值,但它是一个多位数的十进制数,例如 0.4785835398457。我想将此数字减少到 3 或 4 位数字,如 0.3234,我在 TextView 中显示该值。所以首先,我必须形成这个值,其次我需要将它转换为字符串。我在 RecyclerAdapter 的 onBindViewHolder 部分尝试了 DecimalFormat 方法。
override fun onBindViewHolder(holder: CoinListViewHolder, position: Int) {
val df = DecimalFormat("#.###")
df.roundingMode= RoundingMode.CEILING //<-----Here
df.format(coinList[position].price_usd.also { holder.itemView.coinPrice.text = it.toString() }) // <----- And here
holder.itemView.coinTicker.text= coinList[position].asset_id
holder.itemView.setOnClickListener {
listener.onItemClick(coinList, position)
}
但是没有用。请帮我。 提前致谢。
您可以只使用一个字符串格式化程序,它使用您想要的小数位数:
val number = 123.12345
"%.3f".format(number).run(::println)
>> 123.123
这基本上是将浮点值 (f
) 转换为字符串,转换为三位有效数字 (.3
)。格式规范是 here,但有点复杂。
就您的代码而言,这:
df.format(coinList[position].price_usd.also { holder.itemView.coinPrice.text = it.toString() })
相当于:
val price = coinList[position].price_usd
holder.itemView.coinPrice.text = price.toString()
df.format(price)
我假设你想格式化价格然后然后在TextView
中显示它(现在你只是格式化它而不对结果),这将是这样的:
df.format(coinList[position].price_usd)
.let { holder.itemView.coinPrice.text = it.toString() }
即做格式,然后用结果
做this尝试holder.itemView.coinPrice.text = df.format(coinList[position].price_usd)