Rust:
Redondeo de números
Cómo:
Rust hace que redondear sea muy fácil. Mira estos métodos para los tipos f32
o f64
:
fn main() {
let num = 2.34567;
// Redondear al número entero más cercano
let round = num.round();
println!("Redondear: {}", round); // Redondear: 2
// Piso - el mayor entero menor o igual al número
let floor = num.floor();
println!("Piso: {}", floor); // Piso: 2
// Techo - el menor entero mayor o igual al número
let ceil = num.ceil();
println!("Techo: {}", ceil); // Techo: 3
// Truncar - parte entera sin dígitos fraccionales
let trunc = num.trunc();
println!("Truncar: {}", trunc); // Truncar: 2
// Al múltiplo más cercano de una potencia de diez
let multiple_of_ten = (num * 100.0).round() / 100.0;
println!("Redondeado a 2 decimales: {}", multiple_of_ten); // Redondeado a 2 decimales: 2.35
}
Inmersión Profunda
Históricamente, el redondeo ha sido crucial para ajustar decimales infinitos o números irracionales en espacios digitales limitados—una necesidad para los antiguos ordenadores con escasa memoria. Piensa en un ábaco, pero menos artístico y más matemático.
Alternativas a los métodos nativos de Rust incluyen:
- Macro
format!
para el formateo de cadenas que redondea por defecto. - Crates externos para tareas matemáticas especializadas, como el crate
round
con control más granular.
Bajo el capó, las operaciones de redondeo de Rust cumplen con los estándares IEEE—jerga técnica para “redondea como quiere tu profesor de matemáticas”. Además, debido a las representaciones binarias, algunos números no se pueden redondear tradicionalmente, como el 0.1, debido a su representación infinita en binario.
Ver También
- Documentación de Rust sobre métodos de tipo primitivo: https://doc.rust-lang.org/std/primitive.f64.html
- Estándar IEEE para Aritmética de Punto Flotante (IEEE 754): https://ieeexplore.ieee.org/document/4610935
- Crate “round” para redondeo más complejo: https://crates.io/crates/round