2222 ÷ 80 後,扣除整數,只留下小數,再將小數 × 80
既然會產生小數,直覺就是將數字轉成 Float 運算,但算出來的結果卻不如預期
var ii = 2222 // 個別運算都正確 var i2 = (ii.toFloat()/80) // 結果為 27.775 var i3 = ii/80 // 結果為 27 // 但擺在一起運算就出問題了 i4 = (ii.toFloat()/80) - (ii/80) // 結果為 0.7749996, 而不是 0.775 // 做了各種嘗試後, toBigDecimal() 會維持數字的精度, 而不會產生預期外的結果 var i5 = (((ii.toFloat()/80).toBigDecimal() - (ii/80).toBigDecimal())*(80).toBigDecimal()) // 結果為 62.000 // 但我只要整數, 所以 var i5 = (((ii.toFloat()/80).toBigDecimal() - (ii/80).toBigDecimal())*(80).toBigDecimal()).toInt()
沒有留言:
張貼留言