加大浮点数默认宽度和小数位数

This commit is contained in:
nnhy 2016-09-15 09:33:59 +00:00
parent 19c7d82be3
commit 2acfc0dfc4
2 changed files with 33 additions and 10 deletions

View File

@ -27,8 +27,8 @@ public:
explicit String(uint value, int radix = 10); explicit String(uint value, int radix = 10);
explicit String(Int64 value, int radix = 10); explicit String(Int64 value, int radix = 10);
explicit String(UInt64 value, int radix = 10); explicit String(UInt64 value, int radix = 10);
explicit String(float value, byte decimalPlaces = 2); explicit String(float value, int decimalPlaces = 4);
explicit String(double value, byte decimalPlaces = 2); explicit String(double value, int decimalPlaces = 8);
//virtual ~String(); //virtual ~String();
using Array::SetLength; using Array::SetLength;
@ -65,8 +65,8 @@ public:
bool Concat(uint num, int radix = 10); bool Concat(uint num, int radix = 10);
bool Concat(Int64 num, int radix = 10); bool Concat(Int64 num, int radix = 10);
bool Concat(UInt64 num, int radix = 10); bool Concat(UInt64 num, int radix = 10);
bool Concat(float num, byte decimalPlaces = 2); bool Concat(float num, int decimalPlaces = 4);
bool Concat(double num, byte decimalPlaces = 2); bool Concat(double num, int decimalPlaces = 8);
/*template<typename T> /*template<typename T>
String& operator += (T rhs) {Concat(rhs); return (*this);}*/ String& operator += (T rhs) {Concat(rhs); return (*this);}*/
@ -122,6 +122,7 @@ public:
int ToInt() const; int ToInt() const;
float ToFloat() const; float ToFloat() const;
double ToDouble() const;
// 输出对象的字符串表示方式 // 输出对象的字符串表示方式
virtual String& ToStr(String& str) const; virtual String& ToStr(String& str) const;

View File

@ -104,14 +104,14 @@ String::String(UInt64 value, int radix) : Array(Arr, ArrayLength(Arr))
Concat(value, radix); Concat(value, radix);
} }
String::String(float value, byte decimalPlaces) : Array(Arr, ArrayLength(Arr)) String::String(float value, int decimalPlaces) : Array(Arr, ArrayLength(Arr))
{ {
init(); init();
Concat(value, decimalPlaces); Concat(value, decimalPlaces);
} }
String::String(double value, byte decimalPlaces) : Array(Arr, ArrayLength(Arr)) String::String(double value, int decimalPlaces) : Array(Arr, ArrayLength(Arr))
{ {
init(); init();
@ -470,14 +470,14 @@ bool String::Concat(UInt64 num, int radix)
return Concat(buf, strlen(buf)); return Concat(buf, strlen(buf));
} }
bool String::Concat(float num, byte decimalPlaces) bool String::Concat(float num, int decimalPlaces)
{ {
char buf[20]; char buf[20];
auto string = dtostrf(num, (decimalPlaces + 2), decimalPlaces, buf); auto string = dtostrf(num, (decimalPlaces + 2), decimalPlaces, buf);
return Concat(string, strlen(string)); return Concat(string, strlen(string));
} }
bool String::Concat(double num, byte decimalPlaces) bool String::Concat(double num, int decimalPlaces)
{ {
char buf[20]; char buf[20];
auto string = dtostrf(num, (decimalPlaces + 2), decimalPlaces, buf); auto string = dtostrf(num, (decimalPlaces + 2), decimalPlaces, buf);
@ -714,14 +714,36 @@ int String::ToInt() const
{ {
if(_Length == 0) return 0; if(_Length == 0) return 0;
return atoi(_Arr); if(_Arr[_Length] == '\0') return atoi(_Arr);
// 非零结尾字符串需要特殊处理
String s;
s.copy(_Arr, _Length);
return s.ToInt();
} }
float String::ToFloat() const float String::ToFloat() const
{ {
if(_Length == 0) return 0; if(_Length == 0) return 0;
return atof(_Arr); if(_Arr[_Length] == '\0') return atof(_Arr);
// 非零结尾字符串需要特殊处理
String s;
s.copy(_Arr, _Length);
return s.ToFloat();
}
double String::ToDouble() const
{
if(_Length == 0) return 0;
if(_Arr[_Length] == '\0') return atof(_Arr);
// 非零结尾字符串需要特殊处理
String s;
s.copy(_Arr, _Length);
return s.ToDouble();
} }
// 输出对象的字符串表示方式 // 输出对象的字符串表示方式