mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[poincare] PrintInt: std::log10 can introduce precision error. Use
IEEE754<double>::exponentBase10 instead
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user