diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index cd04bd39327e4682c214e35a656ad60c1179ccc6..0808a727dc77cc56b4ad44105897d3694db2679f 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -936,7 +936,12 @@ void get_command()
 
 float code_value()
 {
-  return (strtod(strchr_pointer + 1, NULL));
+  float ret;
+  char *e = strchr(strchr_pointer, 'E');
+  if (e != NULL) *e = 0;
+  ret = strtod(strchr_pointer+1, NULL);
+  if (e != NULL) *e = 'E';
+  return ret;
 }
 
 long code_value_long()