diff --git a/pom.xml b/pom.xml
index 1f2d665c2daa4a10cc04a37e0cfeecb296bb16e2..7c73f80fb9e5986a037e877688f99b73a9252e5d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -257,6 +257,9 @@
     <contributor>
       <name>Fran&#231;ois-Xavier Laffont</name>
     </contributor>
+    <contributor>
+      <name>Anne-Laure Lugan</name>
+    </contributor>
     <contributor>
       <name>Lukas Matt</name>
     </contributor>
diff --git a/src/main/java/org/orekit/errors/OrekitMessages.java b/src/main/java/org/orekit/errors/OrekitMessages.java
index e72617a1b10a00db6f398ea1765e3ea7b2cd7ac2..fe5d3e19f7a4e3a98d439a0865e36e49411764da 100644
--- a/src/main/java/org/orekit/errors/OrekitMessages.java
+++ b/src/main/java/org/orekit/errors/OrekitMessages.java
@@ -323,7 +323,7 @@ public enum OrekitMessages implements Localizable {
     INCOMPATIBLE_UNITS("units {0} and {1} are not compatible"),
     MISSING_VELOCITY("missing velocity data"),
     ATTEMPT_TO_GENERATE_MALFORMED_FILE("attempt to generate file {0} with a formatting error"),
-    FIND_ROOT("{0} failed to find root between {1} (g={2}) and {3} (g={4})\nLast iteration at {5} (g={6})");
+    FIND_ROOT("{0} failed to find root between {1} (g={2,number,0.0##############E0}) and {3} (g={4,number,0.0##############E0})\nLast iteration at {5} (g={6,number,0.0##############E0})");
 
     // CHECKSTYLE: resume JavadocVariable check
 
diff --git a/src/main/java/org/orekit/propagation/events/EventState.java b/src/main/java/org/orekit/propagation/events/EventState.java
index 6be884d519e8de2ee1cbadd16efa84ccb418a2a8..30d3d78ce7ad50efa0ea8b4b85ca555a816cdd0d 100644
--- a/src/main/java/org/orekit/propagation/events/EventState.java
+++ b/src/main/java/org/orekit/propagation/events/EventState.java
@@ -49,9 +49,6 @@ import org.orekit.time.AbsoluteDate;
  * @param <T> class type for the generic version
  */
 public class EventState<T extends EventDetector> {
-    
-    /** Format to be used to print double values. */
-    private static final String SCIENTIFIC_FORMAT = "%.3e";
 
     /** Event detector. */
     private T detector;
@@ -304,61 +301,64 @@ public class EventState<T extends EventDetector> {
         double loopG = ga;
         while ((afterRootG == 0.0 || afterRootG > 0.0 == g0Positive) &&
                 strictlyAfter(afterRootT, tb)) {
-            try {
-                if (loopG == 0.0) {
-                    // ga == 0.0 and gb may or may not be 0.0
-                    // handle the root at ta first
-                    beforeRootT = loopT;
-                    beforeRootG = loopG;
-                    afterRootT = minTime(shiftedBy(beforeRootT, convergence), tb);
-                    afterRootG = g(interpolator.getInterpolatedState(afterRootT));
-                } else {
-                    // both non-zero, the usual case, use a root finder.
-                    // time zero for evaluating the function f. Needs to be final
-                    final AbsoluteDate fT0 = loopT;
-                    final UnivariateFunction f = dt -> {
-                        return g(interpolator.getInterpolatedState(fT0.shiftedBy(dt)));
-                    };
-                    // tb as a double for use in f
-                    final double tbDouble = tb.durationFrom(fT0);
-                    if (forward) {
+            if (loopG == 0.0) {
+                // ga == 0.0 and gb may or may not be 0.0
+                // handle the root at ta first
+                beforeRootT = loopT;
+                beforeRootG = loopG;
+                afterRootT = minTime(shiftedBy(beforeRootT, convergence), tb);
+                afterRootG = g(interpolator.getInterpolatedState(afterRootT));
+            } else {
+                // both non-zero, the usual case, use a root finder.
+                // time zero for evaluating the function f. Needs to be final
+                final AbsoluteDate fT0 = loopT;
+                final UnivariateFunction f = dt -> {
+                    return g(interpolator.getInterpolatedState(fT0.shiftedBy(dt)));
+                };
+                // tb as a double for use in f
+                final double tbDouble = tb.durationFrom(fT0);
+                if (forward) {
+                    try {
                         final Interval interval =
                                 solver.solveInterval(maxIterationCount, f, 0, tbDouble);
                         beforeRootT = fT0.shiftedBy(interval.getLeftAbscissa());
                         beforeRootG = interval.getLeftValue();
                         afterRootT = fT0.shiftedBy(interval.getRightAbscissa());
                         afterRootG = interval.getRightValue();
-                    } else {
+                        // CHECKSTYLE: stop IllegalCatch check
+                    } catch (RuntimeException e) {
+                        // CHECKSTYLE: resume IllegalCatch check
+                        throw new OrekitException(e, OrekitMessages.FIND_ROOT,
+                                detector, loopT, loopG, tb, gb, lastT, lastG);
+                    }
+                } else {
+                    try {
                         final Interval interval =
                                 solver.solveInterval(maxIterationCount, f, tbDouble, 0);
                         beforeRootT = fT0.shiftedBy(interval.getRightAbscissa());
                         beforeRootG = interval.getRightValue();
                         afterRootT = fT0.shiftedBy(interval.getLeftAbscissa());
                         afterRootG = interval.getLeftValue();
+                        // CHECKSTYLE: stop IllegalCatch check
+                    } catch (RuntimeException e) {
+                        // CHECKSTYLE: resume IllegalCatch check
+                        throw new OrekitException(e, OrekitMessages.FIND_ROOT,
+                                detector, tb, gb, loopT, loopG, lastT, lastG);
                     }
                 }
-                // tolerance is set to less than 1 ulp
-                // assume tolerance is 1 ulp
-                if (beforeRootT.equals(afterRootT)) {
-                    afterRootT = nextAfter(afterRootT);
-                    afterRootG = g(interpolator.getInterpolatedState(afterRootT));
-                }
-                // check loop is making some progress
-                check(forward && afterRootT.compareTo(beforeRootT) > 0 ||
-                      !forward && afterRootT.compareTo(beforeRootT) < 0);
-                // setup next iteration
-                loopT = afterRootT;
-                loopG = afterRootG;
             }
-            catch (RuntimeException e) {
-                if (forward) {
-                    throw new OrekitException(e, OrekitMessages.FIND_ROOT, detector, ta, String.format(SCIENTIFIC_FORMAT, ga), tb, String.format(SCIENTIFIC_FORMAT, gb), lastT,
-                                                String.format(SCIENTIFIC_FORMAT, lastG));
-                } else {
-                    throw new OrekitException(e, OrekitMessages.FIND_ROOT, detector, tb, String.format(SCIENTIFIC_FORMAT, gb), ta, String.format(SCIENTIFIC_FORMAT, ga), lastT,
-                                                String.format(SCIENTIFIC_FORMAT, lastG));
-                }
+            // tolerance is set to less than 1 ulp
+            // assume tolerance is 1 ulp
+            if (beforeRootT.equals(afterRootT)) {
+                afterRootT = nextAfter(afterRootT);
+                afterRootG = g(interpolator.getInterpolatedState(afterRootT));
             }
+            // check loop is making some progress
+            check(forward && afterRootT.compareTo(beforeRootT) > 0 ||
+                  !forward && afterRootT.compareTo(beforeRootT) < 0);
+            // setup next iteration
+            loopT = afterRootT;
+            loopG = afterRootG;
         }
 
         // figure out the result of root finding, and return accordingly
diff --git a/src/main/java/org/orekit/propagation/events/FieldEventState.java b/src/main/java/org/orekit/propagation/events/FieldEventState.java
index 9c60000405a5c572089d5cc34b8dccc87572eb4c..973430c791ea2d15aaef6f03f7af3e19ce99e91e 100644
--- a/src/main/java/org/orekit/propagation/events/FieldEventState.java
+++ b/src/main/java/org/orekit/propagation/events/FieldEventState.java
@@ -306,59 +306,64 @@ public class FieldEventState<D extends FieldEventDetector<T>, T extends Calculus
         T loopG = ga;
         while ((afterRootG.getReal() == 0.0 || afterRootG.getReal() > 0.0 == g0Positive) &&
                 strictlyAfter(afterRootT, tb)) {
-            try {
-                if (loopG.getReal() == 0.0) {
-                    // ga == 0.0 and gb may or may not be 0.0
-                    // handle the root at ta first
-                    beforeRootT = loopT;
-                    beforeRootG = loopG;
-                    afterRootT = minTime(shiftedBy(beforeRootT, convergence), tb);
-                    afterRootG = g(interpolator.getInterpolatedState(afterRootT));
-                } else {
-                    // both non-zero, the usual case, use a root finder.
-                    // time zero for evaluating the function f. Needs to be final
-                    final FieldAbsoluteDate<T> fT0 = loopT;
-                    final UnivariateFunction f = dt -> {
-                        return g(interpolator.getInterpolatedState(fT0.shiftedBy(dt))).getReal();
-                    };
-                    // tb as a double for use in f
-                    final T tbDouble = tb.durationFrom(fT0);
-                    if (forward) {
+            if (loopG.getReal() == 0.0) {
+                // ga == 0.0 and gb may or may not be 0.0
+                // handle the root at ta first
+                beforeRootT = loopT;
+                beforeRootG = loopG;
+                afterRootT = minTime(shiftedBy(beforeRootT, convergence), tb);
+                afterRootG = g(interpolator.getInterpolatedState(afterRootT));
+            } else {
+                // both non-zero, the usual case, use a root finder.
+                // time zero for evaluating the function f. Needs to be final
+                final FieldAbsoluteDate<T> fT0 = loopT;
+                final UnivariateFunction f = dt -> {
+                    return g(interpolator.getInterpolatedState(fT0.shiftedBy(dt))).getReal();
+                };
+                // tb as a double for use in f
+                final T tbDouble = tb.durationFrom(fT0);
+                if (forward) {
+                    try {
                         final Interval interval =
                                 solver.solveInterval(maxIterationCount, f, 0, tbDouble.getReal());
                         beforeRootT = fT0.shiftedBy(interval.getLeftAbscissa());
                         beforeRootG = zero.add(interval.getLeftValue());
                         afterRootT = fT0.shiftedBy(interval.getRightAbscissa());
                         afterRootG = zero.add(interval.getRightValue());
-                    } else {
+                        // CHECKSTYLE: stop IllegalCatch check
+                    } catch (RuntimeException e) {
+                        // CHECKSTYLE: resume IllegalCatch check
+                        throw new OrekitException(e, OrekitMessages.FIND_ROOT,
+                                detector, loopT, loopG, tb, gb, lastT, lastG);
+                    }
+                } else {
+                    try {
                         final Interval interval =
                                 solver.solveInterval(maxIterationCount, f, tbDouble.getReal(), 0);
                         beforeRootT = fT0.shiftedBy(interval.getRightAbscissa());
                         beforeRootG = zero.add(interval.getRightValue());
                         afterRootT = fT0.shiftedBy(interval.getLeftAbscissa());
                         afterRootG = zero.add(interval.getLeftValue());
+                        // CHECKSTYLE: stop IllegalCatch check
+                    } catch (RuntimeException e) {
+                        // CHECKSTYLE: resume IllegalCatch check
+                        throw new OrekitException(e, OrekitMessages.FIND_ROOT,
+                                detector, tb, gb, loopT, loopG, lastT, lastG);
                     }
                 }
-                // tolerance is set to less than 1 ulp
-                // assume tolerance is 1 ulp
-                if (beforeRootT.equals(afterRootT)) {
-                    afterRootT = nextAfter(afterRootT);
-                    afterRootG = g(interpolator.getInterpolatedState(afterRootT));
-                }
-                // check loop is making some progress
-                check(forward && afterRootT.compareTo(beforeRootT) > 0 ||
-                      !forward && afterRootT.compareTo(beforeRootT) < 0);
-                // setup next iteration
-                loopT = afterRootT;
-                loopG = afterRootG;
             }
-            catch (RuntimeException e) {
-                if (forward) {
-                    throw new OrekitException(e, OrekitMessages.FIND_ROOT, detector, ta, ga, tb, gb, lastT, lastG);
-                } else {
-                    throw new OrekitException(e, OrekitMessages.FIND_ROOT, detector, tb, gb, ta, ga, lastT, lastG);
-                }
+            // tolerance is set to less than 1 ulp
+            // assume tolerance is 1 ulp
+            if (beforeRootT.equals(afterRootT)) {
+                afterRootT = nextAfter(afterRootT);
+                afterRootG = g(interpolator.getInterpolatedState(afterRootT));
             }
+            // check loop is making some progress
+            check(forward && afterRootT.compareTo(beforeRootT) > 0 ||
+                  !forward && afterRootT.compareTo(beforeRootT) < 0);
+            // setup next iteration
+            loopT = afterRootT;
+            loopG = afterRootG;
         }
 
         // figure out the result of root finding, and return accordingly
diff --git a/src/main/resources/assets/org/orekit/localization/OrekitMessages_da.utf8 b/src/main/resources/assets/org/orekit/localization/OrekitMessages_da.utf8
index 7e51cce2344368d144622841a1373d21a8184e40..1123a967e83ba8f9de6ca1f8f7196823ceb00ffd 100644
--- a/src/main/resources/assets/org/orekit/localization/OrekitMessages_da.utf8
+++ b/src/main/resources/assets/org/orekit/localization/OrekitMessages_da.utf8
@@ -729,5 +729,5 @@ MISSING_VELOCITY = <MISSING TRANSLATION>
 # attempt to generate file {0} with a formatting error
 ATTEMPT_TO_GENERATE_MALFORMED_FILE = <MISSING TRANSLATION>
 
-# {0} failed to find root between {1} (g={2}) and {3} (g={4})\nLast iteration at {5} (g={6})
+# {0} failed to find root between {1} (g={2,number,0.0##############E0}) and {3} (g={4,number,0.0##############E0})\nLast iteration at {5} (g={6,number,0.0##############E0})
 FIND_ROOT = <MISSING TRANSLATION>
diff --git a/src/main/resources/assets/org/orekit/localization/OrekitMessages_de.utf8 b/src/main/resources/assets/org/orekit/localization/OrekitMessages_de.utf8
index 1b08abfe5cee72e80bc14e11eaf6c3420f3bca5f..7f8a67c13f684a353b6d1a8060f52af4cdfb55dd 100644
--- a/src/main/resources/assets/org/orekit/localization/OrekitMessages_de.utf8
+++ b/src/main/resources/assets/org/orekit/localization/OrekitMessages_de.utf8
@@ -729,5 +729,5 @@ MISSING_VELOCITY = <MISSING TRANSLATION>
 # attempt to generate file {0} with a formatting error
 ATTEMPT_TO_GENERATE_MALFORMED_FILE = <MISSING TRANSLATION>
 
-# {0} failed to find root between {1} (g={2}) and {3} (g={4})\nLast iteration at {5} (g={6})
+# {0} failed to find root between {1} (g={2,number,0.0##############E0}) and {3} (g={4,number,0.0##############E0})\nLast iteration at {5} (g={6,number,0.0##############E0})
 FIND_ROOT = <MISSING TRANSLATION>
diff --git a/src/main/resources/assets/org/orekit/localization/OrekitMessages_el.utf8 b/src/main/resources/assets/org/orekit/localization/OrekitMessages_el.utf8
index 9ff2b28eb8160514ab266aaace6be182d6b9ea31..faa4b62815649e9702103150ba3e4f1e47dc077e 100644
--- a/src/main/resources/assets/org/orekit/localization/OrekitMessages_el.utf8
+++ b/src/main/resources/assets/org/orekit/localization/OrekitMessages_el.utf8
@@ -729,5 +729,5 @@ MISSING_VELOCITY = <MISSING TRANSLATION>
 # attempt to generate file {0} with a formatting error
 ATTEMPT_TO_GENERATE_MALFORMED_FILE = <MISSING TRANSLATION>
 
-# {0} failed to find root between {1} (g={2}) and {3} (g={4})\nLast iteration at {5} (g={6})
+# {0} failed to find root between {1} (g={2,number,0.0##############E0}) and {3} (g={4,number,0.0##############E0})\nLast iteration at {5} (g={6,number,0.0##############E0})
 FIND_ROOT = <MISSING TRANSLATION>
diff --git a/src/main/resources/assets/org/orekit/localization/OrekitMessages_en.utf8 b/src/main/resources/assets/org/orekit/localization/OrekitMessages_en.utf8
index 09c73066d47786856d6b56d2421c149c524ba93e..0ab4c34ad0b8632dfdba7c886be12de6168ccbef 100644
--- a/src/main/resources/assets/org/orekit/localization/OrekitMessages_en.utf8
+++ b/src/main/resources/assets/org/orekit/localization/OrekitMessages_en.utf8
@@ -729,5 +729,5 @@ MISSING_VELOCITY = missing velocity data
 # attempt to generate file {0} with a formatting error
 ATTEMPT_TO_GENERATE_MALFORMED_FILE = attempt to generate file {0} with a formatting error
 
-# {0} failed to find root between {1} (g={2}) and {3} (g={4})\nLast iteration at {5} (g={6})
-FIND_ROOT = {0} failed to find root between {1} (g={2}) and {3} (g={4})\nLast iteration at {5} (g={6})
+# {0} failed to find root between {1} (g={2,number,0.0##############E0}) and {3} (g={4,number,0.0##############E0})\nLast iteration at {5} (g={6,number,0.0##############E0})
+FIND_ROOT = {0} failed to find root between {1} (g={2,number,0.0##############E0}) and {3} (g={4,number,0.0##############E0})\nLast iteration at {5} (g={6,number,0.0##############E0})
diff --git a/src/main/resources/assets/org/orekit/localization/OrekitMessages_es.utf8 b/src/main/resources/assets/org/orekit/localization/OrekitMessages_es.utf8
index f8185c9c4effc31f5777dd26d57a625afce0fdfe..4534c26cd662f7fb2aa7a957385eded7befcf2a6 100644
--- a/src/main/resources/assets/org/orekit/localization/OrekitMessages_es.utf8
+++ b/src/main/resources/assets/org/orekit/localization/OrekitMessages_es.utf8
@@ -729,5 +729,5 @@ MISSING_VELOCITY = <MISSING TRANSLATION>
 # attempt to generate file {0} with a formatting error
 ATTEMPT_TO_GENERATE_MALFORMED_FILE = <MISSING TRANSLATION>
 
-# {0} failed to find root between {1} (g={2}) and {3} (g={4})\nLast iteration at {5} (g={6})
-FIND_ROOT = {0} ha fallado buscando una solución entre {1} (g={2}) y {3} (g={4})\nÚltima iteración en {5} (g={6})
+# {0} failed to find root between {1} (g={2,number,0.0##############E0}) and {3} (g={4,number,0.0##############E0})\nLast iteration at {5} (g={6,number,0.0##############E0})
+FIND_ROOT = {0} ha fallado buscando una solución entre {1} (g={2,number,0.0##############E0}) y {3} (g={4,number,0.0##############E0})\nÚltima iteración en {5} (g={6,number,0.0##############E0})
diff --git a/src/main/resources/assets/org/orekit/localization/OrekitMessages_fr.utf8 b/src/main/resources/assets/org/orekit/localization/OrekitMessages_fr.utf8
index 24a70b4ea33f87e4d56687707e7213309e3a555d..afb04cba370a5742fc23e049a89e3c8300e04272 100644
--- a/src/main/resources/assets/org/orekit/localization/OrekitMessages_fr.utf8
+++ b/src/main/resources/assets/org/orekit/localization/OrekitMessages_fr.utf8
@@ -729,5 +729,5 @@ MISSING_VELOCITY = données de vitesse manquantes
 # attempt to generate file {0} with a formatting error
 ATTEMPT_TO_GENERATE_MALFORMED_FILE = tentative de génération du fichier {0} avec une erreur de format
 
-# {0} failed to find root between {1} (g={2}) and {3} (g={4})\nLast iteration at {5} (g={6})
-FIND_ROOT = {0} n''a pas réussi à trouver une solution entre {1} (g={2}) et {3} (g={4})\nLa dernière itération était à {5} (g={6})
+# {0} failed to find root between {1} (g={2,number,0.0##############E0}) and {3} (g={4,number,0.0##############E0})\nLast iteration at {5} (g={6,number,0.0##############E0})
+FIND_ROOT = {0} n''a pas réussi à trouver une solution entre {1} (g={2,number,0.0##############E0}) et {3} (g={4,number,0.0##############E0})\nLa dernière itération était à {5} (g={6,number,0.0##############E0})
diff --git a/src/main/resources/assets/org/orekit/localization/OrekitMessages_gl.utf8 b/src/main/resources/assets/org/orekit/localization/OrekitMessages_gl.utf8
index b318e32c6dc8f145e870d2f27aec787dd42a2cf7..26291d7e7487dd3262dfd019ef050b2779888205 100644
--- a/src/main/resources/assets/org/orekit/localization/OrekitMessages_gl.utf8
+++ b/src/main/resources/assets/org/orekit/localization/OrekitMessages_gl.utf8
@@ -729,5 +729,5 @@ MISSING_VELOCITY = <MISSING TRANSLATION>
 # attempt to generate file {0} with a formatting error
 ATTEMPT_TO_GENERATE_MALFORMED_FILE = <MISSING TRANSLATION>
 
-# {0} failed to find root between {1} (g={2}) and {3} (g={4})\nLast iteration at {5} (g={6})
+# {0} failed to find root between {1} (g={2,number,0.0##############E0}) and {3} (g={4,number,0.0##############E0})\nLast iteration at {5} (g={6,number,0.0##############E0})
 FIND_ROOT = <MISSING TRANSLATION>
diff --git a/src/main/resources/assets/org/orekit/localization/OrekitMessages_it.utf8 b/src/main/resources/assets/org/orekit/localization/OrekitMessages_it.utf8
index 4f09eef46ec6af1ce026378724204d9eda8af1a4..1f68723ee62a70821273f6a06b174ad7119bbfaf 100644
--- a/src/main/resources/assets/org/orekit/localization/OrekitMessages_it.utf8
+++ b/src/main/resources/assets/org/orekit/localization/OrekitMessages_it.utf8
@@ -729,5 +729,5 @@ MISSING_VELOCITY = informazioni mancanti su velocità
 # attempt to generate file {0} with a formatting error
 ATTEMPT_TO_GENERATE_MALFORMED_FILE = <MISSING TRANSLATION>
 
-# {0} failed to find root between {1} (g={2}) and {3} (g={4})\nLast iteration at {5} (g={6})
+# {0} failed to find root between {1} (g={2,number,0.0##############E0}) and {3} (g={4,number,0.0##############E0})\nLast iteration at {5} (g={6,number,0.0##############E0})
 FIND_ROOT = <MISSING TRANSLATION>
diff --git a/src/main/resources/assets/org/orekit/localization/OrekitMessages_no.utf8 b/src/main/resources/assets/org/orekit/localization/OrekitMessages_no.utf8
index 803c7a6f164aac6bd99c9287328586c1bcda8373..5c4d019ce441540081ecad6e7aa4f7bd2479bc3b 100644
--- a/src/main/resources/assets/org/orekit/localization/OrekitMessages_no.utf8
+++ b/src/main/resources/assets/org/orekit/localization/OrekitMessages_no.utf8
@@ -729,6 +729,6 @@ MISSING_VELOCITY = <MISSING TRANSLATION>
 # attempt to generate file {0} with a formatting error
 ATTEMPT_TO_GENERATE_MALFORMED_FILE = <MISSING TRANSLATION>
 
-# {0} failed to find root between {1} (g={2}) and {3} (g={4})\nLast iteration at {5} (g={6})
+# {0} failed to find root between {1} (g={2,number,0.0##############E0}) and {3} (g={4,number,0.0##############E0})\nLast iteration at {5} (g={6,number,0.0##############E0})
 FIND_ROOT = <MISSING TRANSLATION>
 
diff --git a/src/main/resources/assets/org/orekit/localization/OrekitMessages_ro.utf8 b/src/main/resources/assets/org/orekit/localization/OrekitMessages_ro.utf8
index 3f741941edae88847070a1daeb87ef76eff101e6..fba750f4d35119244c4d5713a28d0cf2743867b0 100644
--- a/src/main/resources/assets/org/orekit/localization/OrekitMessages_ro.utf8
+++ b/src/main/resources/assets/org/orekit/localization/OrekitMessages_ro.utf8
@@ -729,5 +729,5 @@ MISSING_VELOCITY = <MISSING TRANSLATION>
 # attempt to generate file {0} with a formatting error
 ATTEMPT_TO_GENERATE_MALFORMED_FILE = <MISSING TRANSLATION>
 
-# {0} failed to find root between {1} (g={2}) and {3} (g={4})\nLast iteration at {5} (g={6})
+# {0} failed to find root between {1} (g={2,number,0.0##############E0}) and {3} (g={4,number,0.0##############E0})\nLast iteration at {5} (g={6,number,0.0##############E0})
 FIND_ROOT = <MISSING TRANSLATION>
diff --git a/src/test/java/org/orekit/propagation/events/EventDetectorTest.java b/src/test/java/org/orekit/propagation/events/EventDetectorTest.java
index 1a8ac17d65fea5d7baef480d27be22d2524b7e34..51596d19825a6120a08a220a746837a3b956e0a9 100644
--- a/src/test/java/org/orekit/propagation/events/EventDetectorTest.java
+++ b/src/test/java/org/orekit/propagation/events/EventDetectorTest.java
@@ -16,8 +16,11 @@
  */
 package org.orekit.propagation.events;
 
+import java.util.Locale;
 import java.util.function.Function;
 
+import org.hamcrest.CoreMatchers;
+import org.hamcrest.MatcherAssert;
 import org.hipparchus.exception.LocalizedCoreFormats;
 import org.hipparchus.geometry.euclidean.threed.Vector3D;
 import org.hipparchus.ode.ODEIntegrator;
@@ -301,6 +304,11 @@ public class EventDetectorTest {
         } catch (OrekitException oe) {
             Assert.assertSame(OrekitException.class, oe.getClass());
             Assert.assertSame(dummyCause, oe.getCause().getCause());
+            String expected = "failed to find root between 2011-05-11T00:00:00.000 " +
+                    "(g=-3.6E3) and 2012-05-10T06:00:00.000 (g=3.1554E7)\n" +
+                    "Last iteration at 2011-05-11T00:00:00.000 (g=-3.6E3)";
+            MatcherAssert.assertThat(oe.getMessage(Locale.US),
+                    CoreMatchers.containsString(expected));
         }
     }
 
diff --git a/src/test/java/org/orekit/propagation/events/FieldEventDetectorTest.java b/src/test/java/org/orekit/propagation/events/FieldEventDetectorTest.java
index b2fc874b25ea65d2aa50bcf16c1c823e604bd3a6..62bbad29af8f55447ab4fcb059a50b3f445f02ac 100644
--- a/src/test/java/org/orekit/propagation/events/FieldEventDetectorTest.java
+++ b/src/test/java/org/orekit/propagation/events/FieldEventDetectorTest.java
@@ -17,8 +17,11 @@
 package org.orekit.propagation.events;
 
 import java.lang.reflect.Array;
+import java.util.Locale;
 import java.util.function.Function;
 
+import org.hamcrest.CoreMatchers;
+import org.hamcrest.MatcherAssert;
 import org.hipparchus.CalculusFieldElement;
 import org.hipparchus.Field;
 import org.hipparchus.exception.LocalizedCoreFormats;
@@ -371,6 +374,11 @@ public class FieldEventDetectorTest {
         } catch (OrekitException oe) {
             Assert.assertSame(OrekitException.class, oe.getClass());
             Assert.assertSame(dummyCause, oe.getCause().getCause());
+            String expected = "failed to find root between 2011-05-11T00:00:00.000 " +
+                    "(g=-3.6E3) and 2012-05-10T06:00:00.000 (g=3.1554E7)\n" +
+                    "Last iteration at 2011-05-11T01:00:00.000 (g=-3.6E3)";
+            MatcherAssert.assertThat(oe.getMessage(Locale.US),
+                    CoreMatchers.containsString(expected));
         }
     }