Benoit Blanchon před 11 roky
rodič
revize
18f93b4eb6
1 změnil soubory, kde provedl 19 přidání a 3 odebrání
  1. 19 3
      JsonGenerator/Print.cpp

+ 19 - 3
JsonGenerator/Print.cpp

@@ -5,9 +5,9 @@
 
 #ifndef ARDUINO
 
-#include "Print.h"
-#include <cstdio>
-
+#include "Print.h"
+#include <string> // for sprintf, strchr and strcat
+
 size_t Print::print(const char s[])
 {
     size_t n = 0;
@@ -18,10 +18,26 @@ size_t Print::print(const char s[])
     return n;
 }
 
+static inline void ensureStringContainsPoint(char* s)
+{
+    // Ensures that the decimal point is present.
+    // For example, we don't want "0" but "0.0".
+    // Otherwise, the value would be considered as an integer by some parsers
+    // See issue #22
+
+    if (!strchr(s, '.'))
+        strcat(s, ".0");
+}
+
 size_t Print::print(double value, int digits)
 {
     char tmp[32];
+
     sprintf(tmp, "%.*lg", digits+1, value);
+
+    if (digits>0)
+        ensureStringContainsPoint(tmp);
+
     return print(tmp);
 }