如何将毫秒转换为秒并在Android TextView中正确显示?
解决毫秒转秒并正确显示小数的问题
你的问题出在整数除法的精度丢失:counter是Long类型,1000是整数,两者做除法时会直接取整,所以小于1000的数值除以1000结果都是0,自然显示0。要得到0.1、0.9这样的小数,需要做浮点运算并格式化输出。
修改方案
把原来的整数除法改成浮点运算,再用格式化字符串保留一位小数,替换这行代码:
textView.text = (counter/1000).toString()
为:
textView.text = "%.1f".format(counter.toDouble() / 1000)
代码解释
counter.toDouble():把Long类型的数值转换为浮点数,确保除法运算保留小数部分/ 1000:浮点除法得到精确的秒数(比如900→0.9,1000→1.0)"%.1f".format(...):格式化字符串,强制保留1位小数,正好符合你要的0.1到1.0的显示效果
简化版(直接用progress,无需counter)
你也可以不用counter变量,直接用回调里的progress参数计算,代码更简洁:
override fun onProgressChanged( seekBar: SeekBar?, progress: Int, fromUser: Boolean ) { textView.text = "%.1f".format(progress.toDouble() / 1000) }
这样修改后,SeekBar拉到100时显示0.1,900时显示0.9,1000时显示1.0,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Daniel Lip
相关产品推荐
相关产品推荐

