diff --git a/clang-tidy/bugprone/IncorrectRoundingsCheck.cpp b/clang-tidy/bugprone/IncorrectRoundingsCheck.cpp
index c0f76cc..c03af11 100644
--- a/clang-tidy/bugprone/IncorrectRoundingsCheck.cpp
+++ b/clang-tidy/bugprone/IncorrectRoundingsCheck.cpp
@@ -23,12 +23,7 @@
 
 namespace {
 AST_MATCHER(FloatingLiteral, floatHalf) {
-  const llvm::APFloat Literal = Node.getValue();
-  if ((&Node.getSemantics()) == &llvm::APFloat::IEEEsingle())
-    return Literal == getHalf(llvm::APFloat::IEEEsingle());
-  if ((&Node.getSemantics()) == &llvm::APFloat::IEEEdouble())
-    return Literal == getHalf(llvm::APFloat::IEEEdouble());
-  return false;
+  return Node.getValue() == getHalf(Node.getSemantics());
 }
 } // namespace
 
@@ -39,24 +34,15 @@
   // Match a floating point expression.
   auto FloatType = expr(hasType(realFloatingPointType()));
 
-  // Match a floating literal of 0.5 or a floating literal of 0.5 implicitly.
-  // cast to floating type.
-  auto FloatOrCastHalf =
-      anyOf(FloatHalf,
-            implicitCastExpr(FloatType, has(ignoringParenImpCasts(FloatHalf))));
-
-  // Match if either the LHS or RHS is a floating literal of 0.5 or a floating
-  // literal of 0.5 and the other is of type double or vice versa.
-  auto OneSideHalf = anyOf(allOf(hasLHS(FloatOrCastHalf), hasRHS(FloatType)),
-                           allOf(hasRHS(FloatOrCastHalf), hasLHS(FloatType)));
-
   // Find expressions of cast to int of the sum of a floating point expression
   // and 0.5.
   MatchFinder->addMatcher(
       traverse(TK_AsIs,
-               implicitCastExpr(hasImplicitDestinationType(isInteger()),
-                                ignoringParenCasts(binaryOperator(
-                                    hasOperatorName("+"), OneSideHalf)))
+               implicitCastExpr(
+                   hasImplicitDestinationType(isInteger()),
+                   ignoringParenCasts(binaryOperator(
+                       hasOperatorName("+"), hasOperands(FloatType, FloatType),
+                       hasEitherOperand(ignoringParenImpCasts(FloatHalf)))))
                    .bind("CastExpr")),
       this);
 }
diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst
index 4563aa8..d7359ec 100644
--- a/docs/ReleaseNotes.rst
+++ b/docs/ReleaseNotes.rst
@@ -183,6 +183,10 @@
   <clang-tidy/checks/bugprone/fold-init-type>` to handle iterators that do not
   define `value_type` type aliases.
 
+- Improved :doc:`bugprone-incorrect-roundings
+  <clang-tidy/checks/bugprone/incorrect-roundings>` check by adding support for
+  other floating point representations in float constant like ``0.5L``.
+
 - Deprecated check-local options `HeaderFileExtensions` and `ImplementationFileExtensions`
   in :doc:`bugprone-suspicious-include
   <clang-tidy/checks/bugprone/suspicious-include>` check.
diff --git a/test/clang-tidy/checkers/bugprone/incorrect-roundings.cpp b/test/clang-tidy/checkers/bugprone/incorrect-roundings.cpp
index 7ada061..23bb0af 100644
--- a/test/clang-tidy/checkers/bugprone/incorrect-roundings.cpp
+++ b/test/clang-tidy/checkers/bugprone/incorrect-roundings.cpp
@@ -12,74 +12,126 @@
   // CHECK-MESSAGES: [[@LINE-1]]:7: warning: casting (double + 0.5) to integer leads to incorrect rounding; consider using lround (#include <cmath>) instead [bugprone-incorrect-roundings]
   x = (d + 0.5f);
   // CHECK-MESSAGES: [[@LINE-1]]:7: warning: casting (double + 0.5)
+  x = (d + 0.5L);
+  // CHECK-MESSAGES: [[@LINE-1]]:7: warning: casting (double + 0.5)
   x = (f + 0.5);
   // CHECK-MESSAGES: [[@LINE-1]]:7: warning: casting (double + 0.5)
   x = (f + 0.5f);
   // CHECK-MESSAGES: [[@LINE-1]]:7: warning: casting (double + 0.5)
+  x = (f + 0.5L);
+  // CHECK-MESSAGES: [[@LINE-1]]:7: warning: casting (double + 0.5)
   x = (0.5 + d);
   // CHECK-MESSAGES: [[@LINE-1]]:7: warning: casting (double + 0.5)
   x = (0.5f + d);
   // CHECK-MESSAGES: [[@LINE-1]]:7: warning: casting (double + 0.5)
+  x = (0.5L + d);
+  // CHECK-MESSAGES: [[@LINE-1]]:7: warning: casting (double + 0.5)
   x = (0.5 + ld);
   // CHECK-MESSAGES: [[@LINE-1]]:7: warning: casting (double + 0.5)
   x = (0.5f + ld);
   // CHECK-MESSAGES: [[@LINE-1]]:7: warning: casting (double + 0.5)
+  x = (0.5L + ld);
+  // CHECK-MESSAGES: [[@LINE-1]]:7: warning: casting (double + 0.5)
   x = (0.5 + f);
   // CHECK-MESSAGES: [[@LINE-1]]:7: warning: casting (double + 0.5)
   x = (0.5f + f);
   // CHECK-MESSAGES: [[@LINE-1]]:7: warning: casting (double + 0.5)
+  x = (0.5L + f);
+  // CHECK-MESSAGES: [[@LINE-1]]:7: warning: casting (double + 0.5)
   x = (int)(d + 0.5);
   // CHECK-MESSAGES: [[@LINE-1]]:12: warning: casting (double + 0.5)
   x = (int)(d + 0.5f);
   // CHECK-MESSAGES: [[@LINE-1]]:12: warning: casting (double + 0.5)
+  x = (int)(d + 0.5L);
+  // CHECK-MESSAGES: [[@LINE-1]]:12: warning: casting (double + 0.5)
   x = (int)(ld + 0.5);
   // CHECK-MESSAGES: [[@LINE-1]]:12: warning: casting (double + 0.5)
   x = (int)(ld + 0.5f);
   // CHECK-MESSAGES: [[@LINE-1]]:12: warning: casting (double + 0.5)
+  x = (int)(ld + 0.5L);
+  // CHECK-MESSAGES: [[@LINE-1]]:12: warning: casting (double + 0.5)
   x = (int)(f + 0.5);
   // CHECK-MESSAGES: [[@LINE-1]]:12: warning: casting (double + 0.5)
   x = (int)(f + 0.5f);
   // CHECK-MESSAGES: [[@LINE-1]]:12: warning: casting (double + 0.5)
+  x = (int)(f + 0.5L);
+  // CHECK-MESSAGES: [[@LINE-1]]:12: warning: casting (double + 0.5)
   x = (int)(0.5 + d);
   // CHECK-MESSAGES: [[@LINE-1]]:12: warning: casting (double + 0.5)
   x = (int)(0.5f + d);
   // CHECK-MESSAGES: [[@LINE-1]]:12: warning: casting (double + 0.5)
+  x = (int)(0.5L + d);
+  // CHECK-MESSAGES: [[@LINE-1]]:12: warning: casting (double + 0.5)
   x = (int)(0.5 + ld);
   // CHECK-MESSAGES: [[@LINE-1]]:12: warning: casting (double + 0.5)
   x = (int)(0.5f + ld);
   // CHECK-MESSAGES: [[@LINE-1]]:12: warning: casting (double + 0.5)
+  x = (int)(0.5L + ld);
+  // CHECK-MESSAGES: [[@LINE-1]]:12: warning: casting (double + 0.5)
   x = (int)(0.5 + f);
   // CHECK-MESSAGES: [[@LINE-1]]:12: warning: casting (double + 0.5)
   x = (int)(0.5f + f);
   // CHECK-MESSAGES: [[@LINE-1]]:12: warning: casting (double + 0.5)
+  x = (int)(0.5L + f);
+  // CHECK-MESSAGES: [[@LINE-1]]:12: warning: casting (double + 0.5)
   x = static_cast<int>(d + 0.5);
   // CHECK-MESSAGES: [[@LINE-1]]:24: warning: casting (double + 0.5)
   x = static_cast<int>(d + 0.5f);
   // CHECK-MESSAGES: [[@LINE-1]]:24: warning: casting (double + 0.5)
+  x = static_cast<int>(d + 0.5L);
+  // CHECK-MESSAGES: [[@LINE-1]]:24: warning: casting (double + 0.5)
   x = static_cast<int>(ld + 0.5);
   // CHECK-MESSAGES: [[@LINE-1]]:24: warning: casting (double + 0.5)
   x = static_cast<int>(ld + 0.5f);
   // CHECK-MESSAGES: [[@LINE-1]]:24: warning: casting (double + 0.5)
+  x = static_cast<int>(ld + 0.5L);
+  // CHECK-MESSAGES: [[@LINE-1]]:24: warning: casting (double + 0.5)
   x = static_cast<int>(f + 0.5);
   // CHECK-MESSAGES: [[@LINE-1]]:24: warning: casting (double + 0.5)
   x = static_cast<int>(f + 0.5f);
   // CHECK-MESSAGES: [[@LINE-1]]:24: warning: casting (double + 0.5)
+  x = static_cast<int>(f + 0.5L);
+  // CHECK-MESSAGES: [[@LINE-1]]:24: warning: casting (double + 0.5)
   x = static_cast<int>(0.5 + d);
   // CHECK-MESSAGES: [[@LINE-1]]:24: warning: casting (double + 0.5)
   x = static_cast<int>(0.5f + d);
   // CHECK-MESSAGES: [[@LINE-1]]:24: warning: casting (double + 0.5)
+  x = static_cast<int>(0.5L + d);
+  // CHECK-MESSAGES: [[@LINE-1]]:24: warning: casting (double + 0.5)
   x = static_cast<int>(0.5 + ld);
   // CHECK-MESSAGES: [[@LINE-1]]:24: warning: casting (double + 0.5)
   x = static_cast<int>(0.5f + ld);
   // CHECK-MESSAGES: [[@LINE-1]]:24: warning: casting (double + 0.5)
+  x = static_cast<int>(0.5L + ld);
+  // CHECK-MESSAGES: [[@LINE-1]]:24: warning: casting (double + 0.5)
   x = static_cast<int>(0.5 + f);
   // CHECK-MESSAGES: [[@LINE-1]]:24: warning: casting (double + 0.5)
   x = static_cast<int>(0.5f + f);
   // CHECK-MESSAGES: [[@LINE-1]]:24: warning: casting (double + 0.5)
+  x = static_cast<int>(0.5L + f);
+  // CHECK-MESSAGES: [[@LINE-1]]:24: warning: casting (double + 0.5)
 
   // Don't warn if constant is not 0.5.
-  x = (int)(d + 0.6);
-  x = (int)(0.6 + d);
+  x = (int)(d + 0.4999);
+  x = (int)(d + 0.4999f);
+  x = (int)(d + 0.4999L);
+  x = (int)(0.4999 + d);
+  x = (int)(0.4999f + d);
+  x = (int)(0.4999L + d);
+
+  x = (int)(d + -0.5);
+  x = (int)(-0.5 + d);
+  x = (int)(d + -0.5f);
+  x = (int)(-0.5f + d);
+  x = (int)(d + -0.5L);
+  x = (int)(-0.5L + d);
+
+  x = (int)(d + 0.5001);
+  x = (int)(d + 0.5001f);
+  x = (int)(d + 0.5001L);
+  x = (int)(0.5001 + d);
+  x = (int)(0.5001f + d);
+  x = (int)(0.5001L + d);
 
   // Don't warn if binary operator is not directly beneath cast.
   x = (int)(1 + (0.5 + f));
