mirror of
https://github.com/arduino/Arduino.git
synced 2025-01-18 07:52:14 +01:00
add String.toFloat
This commit is contained in:
parent
0778f8a3f3
commit
82a2c1d3d9
@ -100,6 +100,19 @@ String::String(unsigned long value, unsigned char base)
|
|||||||
*this = buf;
|
*this = buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String::String(float value, int decimalPlaces)
|
||||||
|
{
|
||||||
|
init();
|
||||||
|
char buf[33];
|
||||||
|
*this = dtostrf(value, (decimalPlaces + 2), decimalPlaces, buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
String::String(double value, int decimalPlaces)
|
||||||
|
{
|
||||||
|
init();
|
||||||
|
char buf[33];
|
||||||
|
*this = dtostrf(value, (decimalPlaces + 2), decimalPlaces, buf);
|
||||||
|
}
|
||||||
String::~String()
|
String::~String()
|
||||||
{
|
{
|
||||||
free(buffer);
|
free(buffer);
|
||||||
@ -283,6 +296,20 @@ unsigned char String::concat(unsigned long num)
|
|||||||
return concat(buf, strlen(buf));
|
return concat(buf, strlen(buf));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned char String::concat(float num)
|
||||||
|
{
|
||||||
|
char buf[20];
|
||||||
|
char* string = dtostrf(num, 8, 6, buf);
|
||||||
|
return concat(string, strlen(string));
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char String::concat(double num)
|
||||||
|
{
|
||||||
|
char buf[20];
|
||||||
|
char* string = dtostrf(num, 8, 6, buf);
|
||||||
|
return concat(string, strlen(string));
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************/
|
/*********************************************/
|
||||||
/* Concatenate */
|
/* Concatenate */
|
||||||
/*********************************************/
|
/*********************************************/
|
||||||
@ -343,6 +370,19 @@ StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num)
|
|||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
StringSumHelper & operator + (const StringSumHelper &lhs, float num)
|
||||||
|
{
|
||||||
|
StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
|
||||||
|
if (!a.concat(num)) a.invalidate();
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
StringSumHelper & operator + (const StringSumHelper &lhs, double num)
|
||||||
|
{
|
||||||
|
StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
|
||||||
|
if (!a.concat(num)) a.invalidate();
|
||||||
|
return a;
|
||||||
|
}
|
||||||
/*********************************************/
|
/*********************************************/
|
||||||
/* Comparison */
|
/* Comparison */
|
||||||
/*********************************************/
|
/*********************************************/
|
||||||
@ -659,3 +699,8 @@ long String::toInt(void) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
float String::toFloat(void) const
|
||||||
|
{
|
||||||
|
if (buffer) return float(atof(buffer));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@ -68,6 +68,8 @@ public:
|
|||||||
explicit String(unsigned int, unsigned char base=10);
|
explicit String(unsigned int, unsigned char base=10);
|
||||||
explicit String(long, unsigned char base=10);
|
explicit String(long, unsigned char base=10);
|
||||||
explicit String(unsigned long, unsigned char base=10);
|
explicit String(unsigned long, unsigned char base=10);
|
||||||
|
explicit String(float, int decimalPlaces=6);
|
||||||
|
explicit String(double, int decimalPlaces=6);
|
||||||
~String(void);
|
~String(void);
|
||||||
|
|
||||||
// memory management
|
// memory management
|
||||||
@ -100,6 +102,8 @@ public:
|
|||||||
unsigned char concat(unsigned int num);
|
unsigned char concat(unsigned int num);
|
||||||
unsigned char concat(long num);
|
unsigned char concat(long num);
|
||||||
unsigned char concat(unsigned long num);
|
unsigned char concat(unsigned long num);
|
||||||
|
unsigned char concat(float num);
|
||||||
|
unsigned char concat(double num);
|
||||||
|
|
||||||
// if there's not enough memory for the concatenated value, the string
|
// if there's not enough memory for the concatenated value, the string
|
||||||
// will be left unchanged (but this isn't signalled in any way)
|
// will be left unchanged (but this isn't signalled in any way)
|
||||||
@ -120,6 +124,8 @@ public:
|
|||||||
friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num);
|
friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num);
|
||||||
friend StringSumHelper & operator + (const StringSumHelper &lhs, long num);
|
friend StringSumHelper & operator + (const StringSumHelper &lhs, long num);
|
||||||
friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num);
|
friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num);
|
||||||
|
friend StringSumHelper & operator + (const StringSumHelper &lhs, float num);
|
||||||
|
friend StringSumHelper & operator + (const StringSumHelper &lhs, double num);
|
||||||
|
|
||||||
// comparison (only works w/ Strings and "strings")
|
// comparison (only works w/ Strings and "strings")
|
||||||
operator StringIfHelperType() const { return buffer ? &String::StringIfHelper : 0; }
|
operator StringIfHelperType() const { return buffer ? &String::StringIfHelper : 0; }
|
||||||
@ -172,6 +178,7 @@ public:
|
|||||||
|
|
||||||
// parsing/conversion
|
// parsing/conversion
|
||||||
long toInt(void) const;
|
long toInt(void) const;
|
||||||
|
float toFloat(void) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
char *buffer; // the actual char array
|
char *buffer; // the actual char array
|
||||||
|
Loading…
x
Reference in New Issue
Block a user