@@ -129,6 +129,11 @@ size_t Print::print(unsigned long long n, int base)
129129 }
130130}
131131
132+ size_t Print::print (float n, int digits)
133+ {
134+ return printFloat (n, digits);
135+ }
136+
132137size_t Print::print (double n, int digits)
133138{
134139 return printFloat (n, digits);
@@ -221,6 +226,13 @@ size_t Print::println(unsigned long long num, int base)
221226 return n;
222227}
223228
229+ size_t Print::println (float num, int digits)
230+ {
231+ size_t n = print (num, digits);
232+ n += println ();
233+ return n;
234+ }
235+
224236size_t Print::println (double num, int digits)
225237{
226238 size_t n = print (num, digits);
@@ -406,7 +418,8 @@ size_t Print::printULLNumber(unsigned long long n64, uint8_t base)
406418 return bytes;
407419}
408420
409- size_t Print::printFloat (double number, uint8_t digits)
421+ template <class T >
422+ size_t Print::printFloat (T number, uint8_t digits)
410423{
411424 size_t n = 0 ;
412425
@@ -430,7 +443,7 @@ size_t Print::printFloat(double number, uint8_t digits)
430443 }
431444
432445 // Round correctly so that print(1.999, 2) prints as "2.00"
433- double rounding = 0.5 ;
446+ T rounding = 0.5 ;
434447 for (uint8_t i = 0 ; i < digits; ++i) {
435448 rounding /= 10.0 ;
436449 }
@@ -439,7 +452,7 @@ size_t Print::printFloat(double number, uint8_t digits)
439452
440453 // Extract the integer part of the number and print it
441454 unsigned long int_part = (unsigned long )number;
442- double remainder = number - (double )int_part;
455+ T remainder = number - (T )int_part;
443456 n += print (int_part);
444457
445458 // Print the decimal point, but only if there are digits beyond
0 commit comments