summaryrefslogtreecommitdiff
path: root/boost/multiprecision/cpp_bin_float/io.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/multiprecision/cpp_bin_float/io.hpp')
-rw-r--r--boost/multiprecision/cpp_bin_float/io.hpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/boost/multiprecision/cpp_bin_float/io.hpp b/boost/multiprecision/cpp_bin_float/io.hpp
index 88d5ddd053..630d651d9d 100644
--- a/boost/multiprecision/cpp_bin_float/io.hpp
+++ b/boost/multiprecision/cpp_bin_float/io.hpp
@@ -8,6 +8,12 @@
namespace boost{ namespace multiprecision{ namespace cpp_bf_io_detail{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127) // conditional expression is constant
+#endif
+
+
//
// Multiplies a by b and shifts the result so it fits inside max_bits bits,
// returns by how much the result was shifted.
@@ -670,7 +676,7 @@ std::string cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::s
switch(exponent())
{
case exponent_zero:
- s = "0";
+ s = sign() ? "-0" : f & std::ios_base::showpos ? "+0" : "0";
boost::multiprecision::detail::format_float_string(s, 0, dig, f, true);
break;
case exponent_nan:
@@ -684,6 +690,10 @@ std::string cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::s
return s;
}
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
}}} // namespaces
#endif