Function parse_number

Source
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);