diff --git a/src/test/examples/filledarray/FilledArray.java b/src/test/examples/filledarray/FilledArray.java
index 4e0c652..46065e2 100644
--- a/src/test/examples/filledarray/FilledArray.java
+++ b/src/test/examples/filledarray/FilledArray.java
@@ -76,7 +76,13 @@
     }
     System.out.println("floats");
     for (int i = 0; i < floats.length; i++) {
-      System.out.println(floats[i]);
+      // Art versions up to 6.0.1 prints Float.MIN_VALUE as:
+      //   1.17549435E-38
+      // instead of
+      //   1.1754944E-38
+      String value = "" + floats[i];
+      value = value.replace("1.17549435E-38", "1.1754944E-38");
+      System.out.println(value);
     }
     for (int i = 0; i < localFloats.length; i++) {
       System.out.println(localFloats[i]);
diff --git a/src/test/examples/regress_70736958/Test.java b/src/test/examples/regress_70736958/Test.java
index 020af6f..3186043 100644
--- a/src/test/examples/regress_70736958/Test.java
+++ b/src/test/examples/regress_70736958/Test.java
@@ -179,7 +179,9 @@
     System.out.println("mJ = " + t.mJ);
     System.out.println("mF = " + t.mF);
     System.out.println("mD = " + t.mD);
-    System.out.println("mArray = " + Arrays.toString(t.mArray));
+    // Art 6 and prior will print 1.61018893E9 instead of  1.6101889E9
+    System.out.println(
+        "mArray = " + Arrays.toString(t.mArray).replaceAll("1.61018893E9", "1.6101889E9"));
   }
 }
 
diff --git a/src/test/examples/regress_72361252/Test.java b/src/test/examples/regress_72361252/Test.java
index 98d687e..055d80a 100644
--- a/src/test/examples/regress_72361252/Test.java
+++ b/src/test/examples/regress_72361252/Test.java
@@ -298,6 +298,8 @@
     System.out.println("mJ = " + t.mJ);
     System.out.println("mF = " + t.mF);
     System.out.println("mD = " + t.mD);
-    System.out.println("mArray = " + Arrays.deepToString(t.mArray));
+    // Art 6 and prior will incorrectly print "1.78618509E9" instead of "1.7861851E9"
+    System.out.println(
+        "mArray = " + Arrays.deepToString(t.mArray).replace("1.78618509E9", "1.7861851E9"));
   }
 }
diff --git a/src/test/java/com/android/tools/r8/R8RunExamplesTest.java b/src/test/java/com/android/tools/r8/R8RunExamplesTest.java
index 2c1b299..8a0cd0e 100644
--- a/src/test/java/com/android/tools/r8/R8RunExamplesTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunExamplesTest.java
@@ -178,15 +178,6 @@
         // This results in Class.isLocalClass always being false and Class.isMemberClass always
         // being true even when the converse is the case when running on the JVM.
         .put("enclosingmethod.Main", TestCondition.any())
-        // Early art versions incorrectly print Float.MIN_VALUE.
-        .put("filledarray.FilledArray",
-            TestCondition.match(TestCondition.runtimesUpTo(Version.V6_0_1)))
-        // Early art versions incorrectly print doubles.
-        .put("regress_70736958.Test",
-            TestCondition.match(TestCondition.runtimesUpTo(Version.V6_0_1)))
-        // Early art versions incorrectly print doubles.
-        .put("regress_72361252.Test",
-            TestCondition.match(TestCondition.runtimesUpTo(Version.V6_0_1)))
         .build();
   }
 
