Fixed issue #22

This commit is contained in:
Benoit Blanchon
2014-09-20 18:44:10 +02:00
parent e682ed5a1e
commit 18f93b4eb6

View File

@ -6,7 +6,7 @@
#ifndef ARDUINO #ifndef ARDUINO
#include "Print.h" #include "Print.h"
#include <cstdio> #include <string> // for sprintf, strchr and strcat
size_t Print::print(const char s[]) size_t Print::print(const char s[])
{ {
@ -18,10 +18,26 @@ size_t Print::print(const char s[])
return n; 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) size_t Print::print(double value, int digits)
{ {
char tmp[32]; char tmp[32];
sprintf(tmp, "%.*lg", digits+1, value); sprintf(tmp, "%.*lg", digits+1, value);
if (digits>0)
ensureStringContainsPoint(tmp);
return print(tmp); return print(tmp);
} }