[poincare] PrintInt: std::log10 can introduce precision error. Use

IEEE754<double>::exponentBase10 instead
This commit is contained in:
Émilie Feral
2019-10-02 12:04:11 +02:00
committed by Ecco
parent b756924f46
commit dc20371a45

View File

@@ -1,11 +1,12 @@
#include <poincare/print_int.h>
#include <poincare/ieee754.h>
#include <assert.h>
#include <cmath>
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<double>::exponentBase10((double)integer) + 1;
assert(wantedLength > 0);
if (bufferLength == 0 || wantedLength > bufferLength) {
return wantedLength;