diff --git a/include/fmt/format-inl.h b/include/fmt/format-inl.h
index 81b236c8..e1010a90 100644
--- a/include/fmt/format-inl.h
+++ b/include/fmt/format-inl.h
@@ -233,17 +233,15 @@ template <typename F> struct basic_fp {
 
   template <typename Float>
   using is_supported = bool_constant<std::numeric_limits<Float>::is_iec559 &&
-                                     std::numeric_limits<Float>::digits <= 64>;
+                                     std::numeric_limits<Float>::digits <= 113>;
 
   // Assigns d to this and return true iff predecessor is closer than successor.
   template <typename Float, FMT_ENABLE_IF(is_supported<Float>::value)>
   FMT_CONSTEXPR bool assign(Float n) {
     // Assume float is in the format [sign][exponent][significand].
-    const int num_float_significand_bits =
-        detail::num_significand_bits<Float>();
     using carrier_uint = typename dragonbox::float_info<Float>::carrier_uint;
     const carrier_uint implicit_bit = carrier_uint(1)
-                                      << num_float_significand_bits;
+                                      << detail::num_significand_bits<Float>();
     const carrier_uint significand_mask = implicit_bit - 1;
     auto u = bit_cast<carrier_uint>(n);
     f = static_cast<uint64_t>(u & significand_mask);
diff --git a/include/fmt/format.h b/include/fmt/format.h
index a3097e22..51d830a2 100644
--- a/include/fmt/format.h
+++ b/include/fmt/format.h
@@ -1252,10 +1252,10 @@ template <> struct float_info<double> {
   static const int shorter_interval_tie_upper_threshold = -77;
 };
 
-// 80-bit extended precision long double.
+// An 80- or 128-bit floating point number.
 template <typename T>
-struct float_info<T, enable_if_t<std::is_same<T, long double>::value &&
-                                 std::numeric_limits<T>::digits == 64>> {
+struct float_info<T, enable_if_t<std::numeric_limits<T>::digits == 64 ||
+                                 std::numeric_limits<T>::digits == 113>> {
   using carrier_uint = detail::uint128_t;
   static const int exponent_bits = 15;
 };