mirror of
https://github.com/fastfloat/fast_float.git
synced 2025-12-07 01:06:48 +08:00
Documentation regarding the integer types
This commit is contained in:
parent
ede1d6b69e
commit
8b849ebab0
47
README.md
47
README.md
@ -4,17 +4,21 @@
|
|||||||
[](https://github.com/fastfloat/fast_float/actions/workflows/ubuntu22.yml)
|
[](https://github.com/fastfloat/fast_float/actions/workflows/ubuntu22.yml)
|
||||||
|
|
||||||
The fast_float library provides fast header-only implementations for the C++ from_chars
|
The fast_float library provides fast header-only implementations for the C++ from_chars
|
||||||
functions for `float` and `double` types. These functions convert ASCII strings representing
|
functions for `float` and `double` types as well as integer types. These functions convert ASCII strings representing decimal values (e.g., `1.3e10`) into binary types. We provide exact rounding (including
|
||||||
decimal values (e.g., `1.3e10`) into binary types. We provide exact rounding (including
|
|
||||||
round to even). In our experience, these `fast_float` functions many times faster than comparable number-parsing functions from existing C++ standard libraries.
|
round to even). In our experience, these `fast_float` functions many times faster than comparable number-parsing functions from existing C++ standard libraries.
|
||||||
|
|
||||||
Specifically, `fast_float` provides the following two functions with a C++17-like syntax (the library itself only requires C++11):
|
Specifically, `fast_float` provides the following two functions to parse floating-point numbers with a C++17-like syntax (the library itself only requires C++11):
|
||||||
|
|
||||||
```C++
|
```C++
|
||||||
from_chars_result from_chars(const char* first, const char* last, float& value, ...);
|
from_chars_result from_chars(const char* first, const char* last, float& value, ...);
|
||||||
from_chars_result from_chars(const char* first, const char* last, double& value, ...);
|
from_chars_result from_chars(const char* first, const char* last, double& value, ...);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
You can also parse integer types:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
The return type (`from_chars_result`) is defined as the struct:
|
The return type (`from_chars_result`) is defined as the struct:
|
||||||
```C++
|
```C++
|
||||||
struct from_chars_result {
|
struct from_chars_result {
|
||||||
@ -103,6 +107,43 @@ We support Visual Studio, macOS, Linux, freeBSD. We support big and little endia
|
|||||||
|
|
||||||
We assume that the rounding mode is set to nearest (`std::fegetround() == FE_TONEAREST`).
|
We assume that the rounding mode is set to nearest (`std::fegetround() == FE_TONEAREST`).
|
||||||
|
|
||||||
|
|
||||||
|
## Integer types
|
||||||
|
|
||||||
|
You can also parse integer types using different bases (e.g., 2, 10, 16). The following code will
|
||||||
|
print the number 22250738585072012 three times:
|
||||||
|
|
||||||
|
|
||||||
|
```C++
|
||||||
|
uint64_t i;
|
||||||
|
const char str[] = "22250738585072012";
|
||||||
|
auto answer = fast_float::from_chars(str, str + strlen(str), i);
|
||||||
|
if (answer.ec != std::errc()) {
|
||||||
|
std::cerr << "parsing failure\n";
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
std::cout << "parsed the number "<< i << std::endl;
|
||||||
|
|
||||||
|
const char binstr[] = "1001111000011001110110111001001010110100111000110001100";
|
||||||
|
|
||||||
|
answer = fast_float::from_chars(binstr, binstr + strlen(binstr), i, 2);
|
||||||
|
if (answer.ec != std::errc()) {
|
||||||
|
std::cerr << "parsing failure\n";
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
std::cout << "parsed the number "<< i << std::endl;
|
||||||
|
|
||||||
|
|
||||||
|
const char hexstr[] = "4f0cedc95a718c";
|
||||||
|
|
||||||
|
answer = fast_float::from_chars(hexstr, hexstr + strlen(hexstr), i, 16);
|
||||||
|
if (answer.ec != std::errc()) {
|
||||||
|
std::cerr << "parsing failure\n";
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
std::cout << "parsed the number "<< i << std::endl;
|
||||||
|
```
|
||||||
|
|
||||||
## C++20: compile-time evaluation (constexpr)
|
## C++20: compile-time evaluation (constexpr)
|
||||||
|
|
||||||
In C++20, you may use `fast_float::from_chars` to parse strings
|
In C++20, you may use `fast_float::from_chars` to parse strings
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user