File tree 2 files changed +18
-4
lines changed
2 files changed +18
-4
lines changed Original file line number Diff line number Diff line change 23
23
#include " itoa.h"
24
24
#include " deprecated-avr-comp/avr/dtostrf.h"
25
25
26
+ #include < float.h>
27
+
28
+ namespace arduino {
29
+
26
30
/* ********************************************/
27
- /* Constructors */
31
+ /* Static Member Initialisation */
28
32
/* ********************************************/
29
33
30
- namespace arduino {
34
+ size_t const String::FLT_MAX_DECIMAL_PLACES;
35
+ size_t const String::DBL_MAX_DECIMAL_PLACES;
36
+
37
+ /* ********************************************/
38
+ /* Constructors */
39
+ /* ********************************************/
31
40
32
41
String::String (const char *cstr)
33
42
{
@@ -111,15 +120,17 @@ String::String(unsigned long value, unsigned char base)
111
120
112
121
String::String (float value, unsigned char decimalPlaces)
113
122
{
123
+ static size_t const FLOAT_BUF_SIZE = FLT_MAX_10_EXP + FLT_MAX_DECIMAL_PLACES + 1 /* '-' */ + 1 /* '.' */ + 1 /* '\0' */ ;
114
124
init ();
115
- char buf[33 ];
125
+ char buf[FLOAT_BUF_SIZE ];
116
126
*this = dtostrf (value, (decimalPlaces + 2 ), decimalPlaces, buf);
117
127
}
118
128
119
129
String::String (double value, unsigned char decimalPlaces)
120
130
{
131
+ static size_t const DOUBLE_BUF_SIZE = DBL_MAX_10_EXP + DBL_MAX_DECIMAL_PLACES + 1 /* '-' */ + 1 /* '.' */ + 1 /* '\0' */ ;
121
132
init ();
122
- char buf[33 ];
133
+ char buf[DOUBLE_BUF_SIZE ];
123
134
*this = dtostrf (value, (decimalPlaces + 2 ), decimalPlaces, buf);
124
135
}
125
136
Original file line number Diff line number Diff line change @@ -58,6 +58,9 @@ class String
58
58
typedef void (String::*StringIfHelperType)() const ;
59
59
void StringIfHelper () const {}
60
60
61
+ static size_t const FLT_MAX_DECIMAL_PLACES = 10 ;
62
+ static size_t const DBL_MAX_DECIMAL_PLACES = FLT_MAX_DECIMAL_PLACES;
63
+
61
64
public:
62
65
// constructors
63
66
// creates a copy of the initial value.
You can’t perform that action at this time.
0 commit comments