Rust:
Làm tròn số

Làm thế nào:

Rust khiến việc làm tròn trở nên dễ dàng. Hãy thử những phương pháp này cho các kiểu f32 hoặc f64:

fn main() {
    let num = 2.34567;

    // Làm tròn đến số nguyên gần nhất
    let round = num.round();
    println!("Round: {}", round); // Round: 2

    // Floor - số nguyên lớn nhất nhỏ hơn hoặc bằng số đó
    let floor = num.floor();
    println!("Floor: {}", floor); // Floor: 2

    // Ceil - số nguyên nhỏ nhất lớn hơn hoặc bằng số
    let ceil = num.ceil();
    println!("Ceil: {}", ceil); // Ceil: 3

    // Truncate - phần nguyên mà không có số thập phân
    let trunc = num.trunc();
    println!("Truncate: {}", trunc); // Truncate: 2

    // Đến bội số gần nhất của một lũy thừa của mười
    let multiple_of_ten = (num * 100.0).round() / 100.0;
    println!("Làm tròn đến 2 chữ số thập phân: {}", multiple_of_ten); // Làm tròn đến 2 chữ số thập phân: 2.35
}

Sâu hơn nữa

Từ cổ xưa, việc làm tròn đã rất quan trọng để chứa đựng các số thập phân vô hạn hoặc số vô tỷ trong không gian số hạn chế—một yêu cầu cần thiết cho những máy tính cổ đại với bộ nhớ khan hiếm. Hãy nghĩ về bàn tính nhưng ít nghệ thuật hơn, nhiều toán học hơn.

Các phương án thay thế cho phương pháp tự nhiên của Rust bao gồm:

  1. Macro format! cho việc định dạng chuỗi mà mặc định làm tròn.
  2. Các crates bên ngoài cho các nhiệm vụ toán học chuyên biệt, như crate round với sự kiểm soát chi tiết hơn.

Bên dưới capô, các hoạt động làm tròn của Rust tuân theo chuẩn IEEE—ngôn ngữ kỹ thuật cho “nó làm tròn như giáo viên toán của bạn mong muốn.” Hơn nữa, do biểu diễn nhị phân, một số số không thể được làm tròn theo cách truyền thống, như 0.1, do chúng được biểu diễn vô hạn trong nhị phân.

Tham khảo thêm