pub fn parse_decimal(s: &str) -> Result<f64, std::num::ParseFloatError> {
s.parse()
}
pub fn format_decimal(value: f64, precision: usize) -> String {
format!("{:.precision$}", value, precision = precision)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_parse_decimal() {
assert_eq!(parse_decimal("0.500000").unwrap(), 0.5);
assert_eq!(parse_decimal("1.000000").unwrap(), 1.0);
assert_eq!(parse_decimal("0.0").unwrap(), 0.0);
assert_eq!(parse_decimal("0.123456").unwrap(), 0.123456);
}
#[test]
fn test_format_decimal() {
assert_eq!(format_decimal(0.5, 6), "0.500000");
assert_eq!(format_decimal(1.0, 6), "1.000000");
assert_eq!(format_decimal(0.0, 6), "0.000000");
assert_eq!(format_decimal(0.123456, 6), "0.123456");
}
#[test]
fn test_roundtrip() {
let original = "0.750000";
let parsed = parse_decimal(original).unwrap();
let back = format_decimal(parsed, 6);
assert_eq!(original, back);
}
}