From dc20371a45791f4e3cba7196cfa3bf1ec805cbdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Wed, 2 Oct 2019 12:04:11 +0200 Subject: [PATCH] [poincare] PrintInt: std::log10 can introduce precision error. Use IEEE754::exponentBase10 instead --- poincare/src/print_int.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/poincare/src/print_int.cpp b/poincare/src/print_int.cpp index c0e89f596..7e819fe77 100644 --- a/poincare/src/print_int.cpp +++ b/poincare/src/print_int.cpp @@ -1,11 +1,12 @@ #include +#include #include #include namespace Poincare { int PrintIntInBuffer(uint32_t integer, char * buffer, int bufferLength, bool left) { - int wantedLength = integer == 0 ? 1 : std::log10(integer*1.0)+1; + int wantedLength = IEEE754::exponentBase10((double)integer) + 1; assert(wantedLength > 0); if (bufferLength == 0 || wantedLength > bufferLength) { return wantedLength;