diff options
author | bryan newbold <bnewbold@robocracy.org> | 2014-06-30 12:53:54 -0400 |
---|---|---|
committer | bnewbold <bnewbold@robocracy.org> | 2015-03-01 21:42:26 -0800 |
commit | 5e6e9187cecb150225312ffbc579921e7b4e8f15 (patch) | |
tree | cfe70d87c7aa297bcdfc36b34d46e1a523a3f4e9 /wirish | |
parent | 90a83152875fbdb8b7e4d4bf79164b4bcc88421e (diff) | |
download | librambutan-5e6e9187cecb150225312ffbc579921e7b4e8f15.tar.gz librambutan-5e6e9187cecb150225312ffbc579921e7b4e8f15.zip |
wirish/Print: explicit double-width constants
These are to prevent implicit constant conversions from floats to
doubles and squelch -Wdouble-promotion warnings.
Normally gcc will start by using doubles to represent floating point
constants. On 32-bit MCUs with a floating point unit, it is more likely
that floats are desired, unless explicitly annotated otherwise.
Diffstat (limited to 'wirish')
-rw-r--r-- | wirish/Print.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/wirish/Print.cpp b/wirish/Print.cpp index f6bc0c6..cf0f74b 100644 --- a/wirish/Print.cpp +++ b/wirish/Print.cpp @@ -196,7 +196,7 @@ void Print::printNumber(unsigned long long n, uint8 base) { * nextafter((double)numeric_limits<long long>::max(), 0.0) ~= 9.22337e+18 * * This slightly smaller value was picked semi-arbitrarily. */ -#define LARGE_DOUBLE_TRESHOLD (9.1e18) +#define LARGE_DOUBLE_TRESHOLD ((double)9.1e18) /* THIS FUNCTION SHOULDN'T BE USED IF YOU NEED ACCURATE RESULTS. * @@ -211,7 +211,7 @@ void Print::printNumber(unsigned long long n, uint8 base) { void Print::printFloat(double number, uint8 digits) { // Hackish fail-fast behavior for large-magnitude doubles if (abs(number) >= LARGE_DOUBLE_TRESHOLD) { - if (number < 0.0) { + if (number < (double)0.0) { print('-'); } print("<large double>"); @@ -219,16 +219,16 @@ void Print::printFloat(double number, uint8 digits) { } // Handle negative numbers - if (number < 0.0) { + if (number < (double)0.0) { print('-'); number = -number; } // Simplistic rounding strategy so that e.g. print(1.999, 2) // prints as "2.00" - double rounding = 0.5; + double rounding = (double)0.5; for (uint8 i = 0; i < digits; i++) { - rounding /= 10.0; + rounding /= (double)10.0; } number += rounding; @@ -244,7 +244,7 @@ void Print::printFloat(double number, uint8 digits) { // Extract digits from the remainder one at a time while (digits-- > 0) { - remainder *= 10.0; + remainder *= (double)10.0; int to_print = (int)remainder; print(to_print); remainder -= to_print; |