diff --git a/libraries/AP_HAL/utility/Print.cpp b/libraries/AP_HAL/utility/Print.cpp index 5c00b7d3ed..db5dbfa28f 100644 --- a/libraries/AP_HAL/utility/Print.cpp +++ b/libraries/AP_HAL/utility/Print.cpp @@ -91,6 +91,14 @@ size_t Print::print(float n, int digits) return printFloat(n, digits); } +// the compiler promotes to double if we do arithmetic in the +// argument, but we only actually want float precision, so just wrap +// it with a double method +size_t Print::print(double n, int digits) +{ + return print((float)n, digits); +} + size_t Print::println(void) { size_t n = print('\r'); @@ -154,6 +162,14 @@ size_t Print::println(float num, int digits) return n; } +// the compiler promotes to double if we do arithmetic in the +// argument, but we only actually want float precision, so just wrap +// it with a double method +size_t Print::println(double num, int digits) +{ + return println((float)num, digits); +} + // Private Methods ///////////////////////////////////////////////////////////// size_t Print::printNumber(unsigned long n, uint8_t base) { diff --git a/libraries/AP_HAL/utility/Print.h b/libraries/AP_HAL/utility/Print.h index 2f6b70fd3f..ddfb20a907 100644 --- a/libraries/AP_HAL/utility/Print.h +++ b/libraries/AP_HAL/utility/Print.h @@ -57,6 +57,7 @@ class AP_HAL::Print { size_t print(long, int = DEC); size_t print(unsigned long, int = DEC); size_t print(float , int = 2); + size_t print(double , int = 2); size_t println(const char[]); size_t println(char); @@ -66,6 +67,7 @@ class AP_HAL::Print { size_t println(long, int = DEC); size_t println(unsigned long, int = DEC); size_t println(float , int = 2); + size_t println(double , int = 2); size_t println(void); };