pub fn parse_number(input: &str) -> IResult<&str, f64>Expand description
Parse a number literal from a string into an f64 value.
This function parses numeric literals according to the AIM expression grammar, supporting integers, floating-point numbers, and scientific notation with flexible syntax. It also handles special floating-point values.
§Supported Formats
- Integers:
123,-456 - Floats:
12.34,-56.78,.5,-.5,123. - Scientific notation:
1e10,2.5e-3,-1.2E+4,5E2 - Special values:
NaN,Inf,+Inf,-Inf
§Arguments
input- A string slice containing the number to parse
§Returns
IResult<&str, f64>- A nom result containing the remaining input and parsed f64 value
§Examples
use aimx::literals::number::parse_number;
assert_eq!(parse_number("123"), Ok(("", 123.0)));
assert_eq!(parse_number("-45.67"), Ok(("", -45.67)));
assert_eq!(parse_number("1e10"), Ok(("", 1e10)));
assert_eq!(parse_number(".5"), Ok(("", 0.5)));
assert!(parse_number("NaN").unwrap().1.is_nan());
assert_eq!(parse_number("Inf").unwrap().1, f64::INFINITY);
assert_eq!(parse_number("-Inf").unwrap().1, f64::NEG_INFINITY);