mirror of
https://github.com/fmtlib/fmt.git
synced 2025-11-26 20:30:06 +01:00
Convert negative precision to zero in printf (#1127)
and remove redundant check in grisu2_prettify.
This commit is contained in:
@@ -1181,8 +1181,7 @@ It grisu2_prettify(const char* digits, int size, int exp, It it,
|
||||
*it++ = static_cast<Char>(params.upper ? 'E' : 'e');
|
||||
return write_exponent<Char>(exp, it);
|
||||
}
|
||||
const int exp_threshold = 21;
|
||||
if (size <= full_exp && full_exp <= exp_threshold) {
|
||||
if (size <= full_exp) {
|
||||
// 1234e7 -> 12340000000[.0+]
|
||||
it = copy_str<Char>(digits, digits + size, it);
|
||||
it = std::fill_n(it, full_exp - size, static_cast<Char>('0'));
|
||||
|
||||
@@ -44,7 +44,7 @@ class printf_precision_handler : public function<int> {
|
||||
int operator()(T value) {
|
||||
if (!int_checker<std::numeric_limits<T>::is_signed>::fits_in_int(value))
|
||||
FMT_THROW(format_error("number is too big"));
|
||||
return static_cast<int>(value);
|
||||
return (std::max)(static_cast<int>(value), 0);
|
||||
}
|
||||
|
||||
template <typename T, FMT_ENABLE_IF(!std::is_integral<T>::value)>
|
||||
|
||||
Reference in New Issue
Block a user