Avatar
0
Mai Văn Thắng Beginner
phép cộng trong Kotlin
fun main() {
  val c = 0.2 + 0.2.2
  val d = 3.5 + 4.3 + 5.1

  println(d) // trả về 12.8999999999999
  println(c) // trả về 0.42000000000004
}

Kết quả này đúng hay sai ạ?

  • Answer
kotlin floating point
Remain: 5
1 Answer
Avatar
monkey Beginner
monkey Beginner
Cái này em code đúng rồi nhé, vì bản chất máy tính không có số thực nó chỉ có nhị phân 1 0 thôi, nên nó cần biểu diễn số thực thông qua chuẩn ví dụ IEEE 754 nên nó sẽ không thể nào đảm bảo chính xác từng dấu phẩy động được. Muốn chính xác dấu phẩy động em phải dùng BigDecimal, ví dụ:

fun main() {
    val c = BigDecimal("0.2") + BigDecimal("0.22")
    val d = BigDecimal("3.5") + BigDecimal("4.3") + BigDecimal("5.1")

    println(d) // trả về 12.9
    println(c) // trả về 0.42
}
  • 0
  • Reply
em cảm ơn anh đã giúp em , mấy hôm nay em nghĩ mãi không thông 😂  –  Mai Văn Thắng 1659669788000