From 21c64372dfb57a72719e79a0d1f7b6cd25d7ec4e Mon Sep 17 00:00:00 2001 From: kishanshukla-2307 <2307kishanshukla@gmail.com> Date: Wed, 18 Mar 2020 18:34:39 +0530 Subject: [PATCH 1/2] fixed bug in number_from_string function --- include/real/exact_number.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/real/exact_number.hpp b/include/real/exact_number.hpp index 5080259..34d0556 100644 --- a/include/real/exact_number.hpp +++ b/include/real/exact_number.hpp @@ -760,7 +760,10 @@ namespace boost { exponent += integer_rhs_zeros; } - integer_part = number.substr(has_sign + integer_lhs_zeros, integer_count); + if (integer_count != 0) + integer_part = number.substr(has_sign + integer_lhs_zeros, integer_count + integer_rhs_zeros); + else + integer_part = number.substr(has_sign + integer_lhs_zeros, integer_count); decimal_part = number.substr(decimal_start_index, decimal_count); return {integer_part, decimal_part, exponent, positive}; From 9319714e2f91a4e10fcd6c624d7f5369b8b8012b Mon Sep 17 00:00:00 2001 From: kishanshukla-2307 <2307kishanshukla@gmail.com> Date: Wed, 18 Mar 2020 18:45:45 +0530 Subject: [PATCH 2/2] added test file for the bug fixed --- test/real_number_from_string_test.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 test/real_number_from_string_test.cpp diff --git a/test/real_number_from_string_test.cpp b/test/real_number_from_string_test.cpp new file mode 100644 index 0000000..de5b287 --- /dev/null +++ b/test/real_number_from_string_test.cpp @@ -0,0 +1,22 @@ +#include +#include +#include + +TEST_CASE("number_from_string") { + + SECTION("a == b") { + boost::real::real a ("100.1e1"); + boost::real::real b ("1001"); + CHECK( a == b ); + } + SECTION("a == b") { + boost::real::real a ("154000.32e2"); + boost::real::real b ("15400032"); + CHECK( a == b ); + } + SECTION("a == b") { + boost::real::real a ("123000.123e3"); + boost::real::real b ("123000123"); + CHECK( a == b ); + } +} \ No newline at end of file