forked from Archive/PX4-Autopilot
libdtoa: don't print trailing zeros if no decimal is printed
This commit is contained in:
parent
ff7712ca3e
commit
a153ee529f
|
@ -145,6 +145,7 @@ static void lib_dtoa(FAR struct lib_outstream_s *obj, int fmt, int prec,
|
||||||
int nchars; /* Number of characters to print */
|
int nchars; /* Number of characters to print */
|
||||||
int dsgn; /* Unused sign indicator */
|
int dsgn; /* Unused sign indicator */
|
||||||
int i;
|
int i;
|
||||||
|
bool done_decimal_point = false;
|
||||||
|
|
||||||
/* special handling for NaN and Infinity */
|
/* special handling for NaN and Infinity */
|
||||||
if (isnan(value)) {
|
if (isnan(value)) {
|
||||||
|
@ -199,6 +200,7 @@ static void lib_dtoa(FAR struct lib_outstream_s *obj, int fmt, int prec,
|
||||||
if (prec > 0 || IS_ALTFORM(flags))
|
if (prec > 0 || IS_ALTFORM(flags))
|
||||||
{
|
{
|
||||||
obj->put(obj, '.');
|
obj->put(obj, '.');
|
||||||
|
done_decimal_point = true;
|
||||||
|
|
||||||
/* Always print at least one digit to the right of the decimal point. */
|
/* Always print at least one digit to the right of the decimal point. */
|
||||||
|
|
||||||
|
@ -224,6 +226,7 @@ static void lib_dtoa(FAR struct lib_outstream_s *obj, int fmt, int prec,
|
||||||
/* Print the decimal point */
|
/* Print the decimal point */
|
||||||
|
|
||||||
obj->put(obj, '.');
|
obj->put(obj, '.');
|
||||||
|
done_decimal_point = true;
|
||||||
|
|
||||||
/* Print any leading zeros to the right of the decimal point */
|
/* Print any leading zeros to the right of the decimal point */
|
||||||
|
|
||||||
|
@ -270,6 +273,7 @@ static void lib_dtoa(FAR struct lib_outstream_s *obj, int fmt, int prec,
|
||||||
/* Print the decimal point */
|
/* Print the decimal point */
|
||||||
|
|
||||||
obj->put(obj, '.');
|
obj->put(obj, '.');
|
||||||
|
done_decimal_point = true;
|
||||||
|
|
||||||
/* Always print at least one digit to the right of the decimal
|
/* Always print at least one digit to the right of the decimal
|
||||||
* point.
|
* point.
|
||||||
|
@ -306,8 +310,9 @@ static void lib_dtoa(FAR struct lib_outstream_s *obj, int fmt, int prec,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Finally, print any trailing zeroes */
|
/* Finally, print any trailing zeroes */
|
||||||
|
if (done_decimal_point) {
|
||||||
zeroes(obj, prec);
|
zeroes(obj, prec);
|
||||||
|
}
|
||||||
|
|
||||||
/* Is this memory supposed to be freed or not? */
|
/* Is this memory supposed to be freed or not? */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue