浮点数转为字符串时,干掉小数后面多余的0
This commit is contained in:
parent
2acfc0dfc4
commit
a25190cdcb
|
@ -16,7 +16,7 @@ extern char* itoa(int value, char* string, int radix);
|
||||||
extern char* ltoa(Int64 value, char* string, int radix);
|
extern char* ltoa(Int64 value, char* string, int radix);
|
||||||
extern char* utoa(uint value, char* string, int radix);
|
extern char* utoa(uint value, char* string, int radix);
|
||||||
extern char* ultoa(UInt64 value, char* string, int radix);
|
extern char* ultoa(UInt64 value, char* string, int radix);
|
||||||
char* dtostrf(double val, char width, byte prec, char* sout);
|
char* dtostrf(double val, byte prec, char* sout);
|
||||||
|
|
||||||
/******************************** String ********************************/
|
/******************************** String ********************************/
|
||||||
|
|
||||||
|
@ -470,18 +470,34 @@ bool String::Concat(UInt64 num, int radix)
|
||||||
return Concat(buf, strlen(buf));
|
return Concat(buf, strlen(buf));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char* ftoa(char* str, double num)
|
||||||
|
{
|
||||||
|
int len = sprintf(str, "%.8f", num);
|
||||||
|
// 干掉后面多余的0
|
||||||
|
for(int i=len; i>=0; i--)
|
||||||
|
{
|
||||||
|
if(str[i] == '0') str[i] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
bool String::Concat(float num, int decimalPlaces)
|
bool String::Concat(float num, int decimalPlaces)
|
||||||
{
|
{
|
||||||
char buf[20];
|
char buf[20];
|
||||||
auto string = dtostrf(num, (decimalPlaces + 2), decimalPlaces, buf);
|
dtostrf(num, decimalPlaces, buf);
|
||||||
return Concat(string, strlen(string));
|
//sprintf(buf, "%f", num);
|
||||||
|
//ftoa(buf, num);
|
||||||
|
return Concat(buf, strlen(buf));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool String::Concat(double num, int decimalPlaces)
|
bool String::Concat(double num, int decimalPlaces)
|
||||||
{
|
{
|
||||||
char buf[20];
|
char buf[20];
|
||||||
auto string = dtostrf(num, (decimalPlaces + 2), decimalPlaces, buf);
|
dtostrf(num, decimalPlaces, buf);
|
||||||
return Concat(string, strlen(string));
|
//sprintf(buf, "%f", num);
|
||||||
|
//ftoa(buf, num);
|
||||||
|
return Concat(buf, strlen(buf));
|
||||||
}
|
}
|
||||||
|
|
||||||
String& operator + (String& lhs, const Object& rhs)
|
String& operator + (String& lhs, const Object& rhs)
|
||||||
|
@ -1118,13 +1134,19 @@ extern char* ultoa(UInt64 value, char* string, int radix)
|
||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *dtostrf (double val, char width, byte prec, char* sout)
|
char *dtostrf (double val, byte prec, char* str)
|
||||||
{
|
{
|
||||||
char fmt[20];
|
char fmt[20];
|
||||||
sprintf(fmt, "%%%d.%df", width, prec);
|
sprintf(fmt, "%%.%df", prec);
|
||||||
sprintf(sout, fmt, val);
|
int len = sprintf(str, fmt, val);
|
||||||
|
|
||||||
return sout;
|
// 干掉后面多余的0
|
||||||
|
for(int i=len; i>=0; i--)
|
||||||
|
{
|
||||||
|
if(str[i] == '0') str[i] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************** StringSplit ********************************/
|
/******************************** StringSplit ********************************/
|
||||||
|
|
Loading…
Reference in New Issue