mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-11-01 00:38:27 +01:00 
			
		
		
		
	Fixed issue #22
This commit is contained in:
		| @@ -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); | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user