#floating-point

no-std hexponent

Hexadecimal float parsing

7 releases

0.3.1 Jul 3, 2020
0.3.0 Apr 21, 2020
0.2.3 Mar 21, 2020
0.1.0 Feb 24, 2020

#1505 in Parser implementations

Download history 47/week @ 2023-06-01 37/week @ 2023-06-08 54/week @ 2023-06-15 88/week @ 2023-06-22 86/week @ 2023-06-29 57/week @ 2023-07-06 32/week @ 2023-07-13 83/week @ 2023-07-20 52/week @ 2023-07-27 65/week @ 2023-08-03 94/week @ 2023-08-10 32/week @ 2023-08-17 77/week @ 2023-08-24 100/week @ 2023-08-31 115/week @ 2023-09-07 138/week @ 2023-09-14

434 downloads per month
Used in 4 crates (2 directly)

MIT/Apache

27KB
510 lines

Hexponent

A library to parse hexadecimal floating point numbers.

Documentation

Documentation can be found at https://docs.rs/hexponent/

Todo

See issues

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


lib.rs:

Hexponent

Hexponent is a hexadecimal literal parser for Rust based on the C11 specification section 6.4.4.2.

use hexponent::FloatLiteral;
let float_repr: FloatLiteral = "0x3.4".parse().unwrap();
let value = float_repr.convert::<f32>().inner();
assert_eq!(value, 3.25);

Hexponent has a minimum supported rust version of 1.34.

Features

  • No dependencies
  • Non-UTF-8 parser
  • Precision warnings
  • no_std support (MSRV 1.36.0)

Differences from the specification

There are two places where hexponent differs from the C11 specificaiton.

  • An exponent is not required. (0x1.2 is allowed)
  • floating-suffix is not parsed. (0x1p4l is not allowed)

no_std support

no_std support can be enabled by disabling the default std feature for hexponent in your Cargo.toml.

hexponent = {version = "0.2", default-features = false}

no_std support is only possible in rustc version 1.36.0 and higher.

Disabling the std feature currently only disables the std::error::Error implementation for ParseError.

No runtime deps