已经在9~11行及内部函数fasc中对结果末4位进行处理
import kotlin.math.roundToLong
import kotlin.math.pow
const val pai:double= 3.14159
fun main(){
val r1 = readln().toDouble()
var s1 = r1.pow(2)
var d = (10000.0 * 2*r1).roundToLong() / 10000.0
var c = (10000.0 * 2*r1*pai).roundToLong() / 10000.0
var s = (10000.0 * s1*pai).roundToLong() / 10000.0
val fasc : (Double) -> String = {
t ->
var cs = 0
var e = 0
var k = 0
var m = ""
var dd = t.toString()
var dc = dd.length
while (cs < dc) {
var ch = dd[cs].toString()
when(ch){
"." -> {e = dc-cs;break}
else -> cs++
}
}
when(e){
1 -> {dd+"0000"}
2 -> {dd+"000"}
3 -> {dd+"00"}
4 -> {dd+"0"}
5 -> {dd}
else -> {cl(dd,cs)}
}
}
println(fasc(d)+" "+fasc(c)+" "+fasc(s))
}
fun cl(wz:String,m:Int):String{
var k = 0
var n = ""
while(k < m+5){
n += wz[k].toString()
k++
}
return(n)
}