mirror of
https://github.com/lemire/fast_double_parser.git
synced 2025-04-03 20:04:57 +00:00
Added remarks.
This commit is contained in:
parent
8214b37c86
commit
42c5413e8e
2 changed files with 14 additions and 3 deletions
|
@ -26,7 +26,9 @@ We have benchmarked our parser on a collection of strings from a sample geojson
|
|||
|
||||
We expect string numbers to follow [RFC 7159](https://tools.ietf.org/html/rfc7159). In particular,
|
||||
the parser will reject overly large values that would not fit in binary64. It will not produce
|
||||
NaN or infinite values.
|
||||
NaN or infinite values. It will refuse to parse `001` or `0.` as these are invalid number strings as
|
||||
per the [JSON specification](https://tools.ietf.org/html/rfc7159). Users who prefer a more
|
||||
lenient C++ parser may consider the [fast_float](https://github.com/lemire/fast_float) C++ library.
|
||||
|
||||
The parsing is locale-independent. E.g., it will parse 0.5 as 1/2, but it will not parse 0,5 as
|
||||
1/2 even if you are under a French system.
|
||||
|
|
|
@ -203,13 +203,22 @@ void issue13() {
|
|||
std::cout << "zero maps to zero" << std::endl;
|
||||
}
|
||||
|
||||
void issue40() {
|
||||
//https://tools.ietf.org/html/rfc7159
|
||||
// A fraction part is a decimal point followed by one or more digits.
|
||||
std::string a = "0.";
|
||||
double x;
|
||||
bool ok = fast_double_parser::parse_number(a.c_str(), &x);
|
||||
if(ok) throw std::runtime_error("We should not parse '0.'");
|
||||
}
|
||||
|
||||
void issue32() {
|
||||
std::string a = "-0";
|
||||
double x;
|
||||
bool ok = fast_double_parser::parse_number(a.c_str(), &x);
|
||||
if(!ok) throw std::runtime_error("could not parse -zero.");
|
||||
if(x != 0) throw std::runtime_error("-zero does not map to zero.");
|
||||
std::cout << "0zero maps to zero" << std::endl;
|
||||
std::cout << "zero maps to zero" << std::endl;
|
||||
}
|
||||
|
||||
void issue23() {
|
||||
|
@ -273,7 +282,7 @@ int main() {
|
|||
Assert(basic_test_64bit("4503599627370497.5", 4503599627370497.5));
|
||||
Assert(basic_test_64bit("0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044501477170144022721148195934182639518696390927032912960468522194496444440421538910330590478162701758282983178260792422137401728773891892910553144148156412434867599762821265346585071045737627442980259622449029037796981144446145705102663115100318287949527959668236039986479250965780342141637013812613333119898765515451440315261253813266652951306000184917766328660755595837392240989947807556594098101021612198814605258742579179000071675999344145086087205681577915435923018910334964869420614052182892431445797605163650903606514140377217442262561590244668525767372446430075513332450079650686719491377688478005309963967709758965844137894433796621993967316936280457084866613206797017728916080020698679408551343728867675409720757232455434770912461317493580281734466552734375", 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044501477170144022721148195934182639518696390927032912960468522194496444440421538910330590478162701758282983178260792422137401728773891892910553144148156412434867599762821265346585071045737627442980259622449029037796981144446145705102663115100318287949527959668236039986479250965780342141637013812613333119898765515451440315261253813266652951306000184917766328660755595837392240989947807556594098101021612198814605258742579179000071675999344145086087205681577915435923018910334964869420614052182892431445797605163650903606514140377217442262561590244668525767372446430075513332450079650686719491377688478005309963967709758965844137894433796621993967316936280457084866613206797017728916080020698679408551343728867675409720757232455434770912461317493580281734466552734375));
|
||||
Assert(basic_test_64bit("0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022250738585072008890245868760858598876504231122409594654935248025624400092282356951787758888037591552642309780950434312085877387158357291821993020294379224223559819827501242041788969571311791082261043971979604000454897391938079198936081525613113376149842043271751033627391549782731594143828136275113838604094249464942286316695429105080201815926642134996606517803095075913058719846423906068637102005108723282784678843631944515866135041223479014792369585208321597621066375401613736583044193603714778355306682834535634005074073040135602968046375918583163124224521599262546494300836851861719422417646455137135420132217031370496583210154654068035397417906022589503023501937519773030945763173210852507299305089761582519159720757232455434770912461317493580281734466552734375", 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022250738585072008890245868760858598876504231122409594654935248025624400092282356951787758888037591552642309780950434312085877387158357291821993020294379224223559819827501242041788969571311791082261043971979604000454897391938079198936081525613113376149842043271751033627391549782731594143828136275113838604094249464942286316695429105080201815926642134996606517803095075913058719846423906068637102005108723282784678843631944515866135041223479014792369585208321597621066375401613736583044193603714778355306682834535634005074073040135602968046375918583163124224521599262546494300836851861719422417646455137135420132217031370496583210154654068035397417906022589503023501937519773030945763173210852507299305089761582519159720757232455434770912461317493580281734466552734375));
|
||||
|
||||
issue40();
|
||||
issue23();
|
||||
issue32();
|
||||
issue23_2();
|
||||
|
|
Loading…
Add table
Reference in a new issue