在 Android-Kotlin 中,我从后端获取浮点数(例如 num = 10000000.47),当我尝试对其进行 String.format 并将该数字添加到我的balanceTextview 中时,它会显示指数(例如 1.0E10)。
我想正常显示数字,不带指数,保留两位小数。(没有精度损失!)
尝试使用 DecimalFormat("#.##") 但它对我没有帮助。也许我做错了什么?
num = 10000000.47f
val dec = DecimalFormat("#.##")
var result = dec.format(num)
my result is: 10000000
It losts my decimal places
Run Code Online (Sandbox Code Playgroud)
Mar*_*vin 15
问题是您的号码类型。根据文档:
对于用小数初始化的变量,编译器推断为 Double 类型。要显式指定某个值的 Float 类型,请添加后缀 f 或 F。如果该值包含的小数位数超过 6-7 位,则会四舍五入。
通过一个示例说明信息可能如何丢失:
val pi = 3.14 // Double
val e = 2.7182818284 // Double
val eFloat = 2.7182818284f // Float, actual value is 2.7182817
Run Code Online (Sandbox Code Playgroud)
如果该值被指定为Double而不是Float,即
val num = 10000000.47
Run Code Online (Sandbox Code Playgroud)
代替
val num = 10000000.47f
Run Code Online (Sandbox Code Playgroud)
那么你的方法将按预期工作,但可以缩短为:
"%.2f".format(num)
Run Code Online (Sandbox Code Playgroud)
(请注意,较短的版本还会将“100”打印为“100.00”,这与您的方法不同,但可能仍然是所需的行为)
如果您收到Float来自后端的信息,那么您这边的信息已经丢失。否则,您应该能够通过改进解析来解决问题。
| 归档时间: |
|
| 查看次数: |
17103 次 |
| 最近记录: |