Rust:
การปัดเศษของตัวเลข
วิธีการ:
Rust ทำให้การปัดเศษตัวเลขเป็นเรื่องง่าย ลองดูเมธอดเหล่านี้สำหรับประเภท f32
หรือ f64
:
fn main() {
let num = 2.34567;
// ปัดเศษไปยังเลขเต็มที่ใกล้ที่สุด
let round = num.round();
println!("ปัดเศษ: {}", round); // ปัดเศษ: 2
// พื้น - เลขเต็มที่ใหญ่ที่สุดที่น้อยกว่าหรือเท่ากับเลข
let floor = num.floor();
println!("พื้น: {}", floor); // พื้น: 2
// เพดาน - เลขเต็มที่น้อยที่สุดที่มากกว่าหรือเท่ากับเลข
let ceil = num.ceil();
println!("เพดาน: {}", ceil); // เพดาน: 3
// ตัดเศษ - ส่วนเต็มโดยไม่มีเศษส่วน
let trunc = num.trunc();
println!("ตัดเศษ: {}", trunc); // ตัดเศษ: 2
// ไปยังหลายเท่าของเลขยกกำลังสิบ
let multiple_of_ten = (num * 100.0).round() / 100.0;
println!("ปัดเศษไปยังทศนิยม 2 ตำแหน่ง: {}", multiple_of_ten); // ปัดเศษไปยังทศนิยม 2 ตำแหน่ง: 2.35
}
ลึกซึ้ง
ในอดีต การปัดเศษมีความสำคัญมากในการจำลองตัวเลขทศนิยมอนันต์หรือตัวเลขอตรรกยะในพื้นที่ดิจิทัลที่จำกัด – เป็นสิ่งจำเป็นสำหรับคอมพิวเตอร์โบราณที่มีหน่วยความจำน้อย นึกถึงอะบาคัสแต่ลดความครีเอทีฟลงและเพิ่มคณิตศาสตร์มากขึ้น
ทางเลือกที่ไม่ใช่เมธอดเนทีฟของ Rust รวมถึง:
- มาโคร
format!
สำหรับการจัดรูปแบบสตริงที่ปัดเศษตามค่าเริ่มต้น - ครีตภายนอกสำหรับงานคณิตศาสตร์เฉพาะทาง เช่น ครีต
round
ที่มีการควบคุมที่ละเอียดขึ้น
ใต้ฝาครอบ การดำเนินการปัดเศษของ Rust ปฏิบัติตามมาตรฐาน IEEE – ศัพท์เทคนิคที่ว่า “มันปัดเศษเหมือนอาจารย์สอนคณิตศาสตร์ของคุณต้องการ” นอกจากนี้ ด้วยเหตุผลของการแสดงผลเป็นเลขฐานสอง บางตัวเลขไม่สามารถปัดเศษได้ตามปกติ เช่น 0.1 ที่มีการแสดงผลเป็นอนันต์ในรูปแบบเลขฐานสอง
ดูเพิ่มเติม
- เอกสาร Rust เกี่ยวกับเมธอดของประเภทตัวเลขพื้นฐาน: https://doc.rust-lang.org/std/primitive.f64.html
- มาตรฐาน IEEE สำหรับการคำนวณเลขยกกำลังลอยตัว (IEEE 754): https://ieeexplore.ieee.org/document/4610935
- ครีต “round” สำหรับการปัดเศษที่ซับซ้อนยิ่งขึ้น: https://crates.io/crates/round