diff --git a/cores/arduino/Print.cpp b/cores/arduino/Print.cpp index 8b41f7c1ba..e9267405a5 100644 --- a/cores/arduino/Print.cpp +++ b/cores/arduino/Print.cpp @@ -129,6 +129,11 @@ size_t Print::print(unsigned long long n, int base) } } +size_t Print::print(float n, int digits) +{ + return printFloat(n, digits); +} + size_t Print::print(double n, int digits) { return printFloat(n, digits); @@ -221,6 +226,13 @@ size_t Print::println(unsigned long long num, int base) return n; } +size_t Print::println(float num, int digits) +{ + size_t n = print(num, digits); + n += println(); + return n; +} + size_t Print::println(double num, int digits) { size_t n = print(num, digits); @@ -406,7 +418,8 @@ size_t Print::printULLNumber(unsigned long long n64, uint8_t base) return bytes; } -size_t Print::printFloat(double number, uint8_t digits) +template +size_t Print::printFloat(T number, uint8_t digits) { size_t n = 0; @@ -430,7 +443,7 @@ size_t Print::printFloat(double number, uint8_t digits) } // Round correctly so that print(1.999, 2) prints as "2.00" - double rounding = 0.5; + T rounding = 0.5; for (uint8_t i = 0; i < digits; ++i) { rounding /= 10.0; } @@ -439,7 +452,7 @@ size_t Print::printFloat(double number, uint8_t digits) // Extract the integer part of the number and print it unsigned long int_part = (unsigned long)number; - double remainder = number - (double)int_part; + T remainder = number - (T)int_part; n += print(int_part); // Print the decimal point, but only if there are digits beyond diff --git a/cores/arduino/Print.h b/cores/arduino/Print.h index 036fd5347b..dc39d634c5 100644 --- a/cores/arduino/Print.h +++ b/cores/arduino/Print.h @@ -36,7 +36,8 @@ class Print { int write_error; size_t printNumber(unsigned long, uint8_t); size_t printULLNumber(unsigned long long, uint8_t); - size_t printFloat(double, uint8_t); + template + size_t printFloat(T, uint8_t); protected: void setWriteError(int err = 1) { @@ -86,6 +87,7 @@ class Print { size_t print(unsigned long, int = DEC); size_t print(long long, int = DEC); size_t print(unsigned long long, int = DEC); + size_t print(float, int = 2); size_t print(double, int = 2); size_t print(const Printable &); @@ -100,6 +102,7 @@ class Print { size_t println(unsigned long, int = DEC); size_t println(long long, int = DEC); size_t println(unsigned long long, int = DEC); + size_t println(float, int = 2); size_t println(double, int = 2); size_t println(const Printable &); size_t println(void); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy