我有一个双精度值,如果该数字是这样的:123.00我需要仅将其显示为123,没有小数位,但是,如果该数字是123.23或123.2,则需要以当前的小数显示位置:123.23或123.2(视具体情况而定)。
我尝试使用十进制格式,但是找不到正确的模式。
这是比字符串转换和子字符串等操作更好的方法吗?
答案 0 :(得分:2)
DecimalFormat是您想要的东西:
import java.text.DecimalFormat
fun main(args : Array<String>) {
val df = DecimalFormat("0.##")
println(df.format(123.0))
println(df.format(123.3))
println(df.format(123.32))
println(df.format(123.327))
}
输出:
123
123.3
123.32
123.33
答案 1 :(得分:1)
这是您可以做到的一种方法:
fun func(x: Double): String {
if (x.rem(1).compareTo(0) == 0){
return x.toInt().toString();
} else {
return x.toString();
}
}
print(func(1.32132)); //Returns 1.32132
print(func(3.00)); //Returns 3
答案 2 :(得分:-1)
您可以将<html>
<head>
<script src="element.js"></script>
</head>
<body>
<element></element>
</body>
</html>
与DecimalFormat
一起使用。创建扩展功能将使复杂性远离呼叫站点:
setMaximumFractionDigits
用法:
fun Double.toStringRounded(fracDigits: Int) = DecimalFormat().apply {
setMaximumFractionDigits(fracDigits)
}.format(this)