Reputation: 311
Let's imagine something like this:
var num: Float = 0.0f
num = 2.4 * 3.5 / 3.8
num
has several decimals, but I want only 2.
In JS I would use num.toFixed(2)
.
Other answers here suggest to use "%.2f".format(num)
or num.format(2)
. The latter needs a custom extension function:
fun Double.format(digits: Int) = java.lang.String.format("%.${digits}f", this)
However, any of these options leads to a compiler error of "unresolved reference". I don't think it is a question of imports because the compiler would suggest it.
Is there an easy way to do this?
Upvotes: 8
Views: 2784
Reputation: 24732
For Kotlin/Wasm, this is how it can be done.
Note that the function return type should be kotlin.js.JsNumber
:
val myValue = 0.12345f
val myValue2Decimals = roundTo2Decimals(myValue)
fun roundTo2Decimals(number: Float): JsNumber = js("number.toFixed(2)")
Upvotes: 0
Reputation: 23164
Kotlin standard library for JS doesn't have anything like Double.format
yet, but you can implement it easily with aforementioned toFixed
function available in javascript:
fun Double.format(digits: Int): String = this.asDynamic().toFixed(digits)
fun Float.format(digits: Int): String = this.asDynamic().toFixed(digits)
This works because Double
and Float
in Kotlin are represented with Number
data type in JS, so you can call toFixed()
function on instances of those types.
Upvotes: 12