From a3d718e69e049228562a6c825735f8ba9d3f8928 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Hord=C3=A9?= Date: Fri, 5 Oct 2018 09:50:39 +0200 Subject: [PATCH] fix: correction erreur nombres petits...reste gestion des exposants --- lib/video.c | 52 ++++++++++++++++++++++++++++--------------------- system/system.c | 2 +- 2 files changed, 31 insertions(+), 23 deletions(-) diff --git a/lib/video.c b/lib/video.c index ebd3740..10aa913 100755 --- a/lib/video.c +++ b/lib/video.c @@ -550,7 +550,7 @@ u8 *rtoasingle(float num, u8 * str, u8 precision) { { *pointer = '.'; fracpart = fracpart * pow(10, precision); - sitoa((u32)fracpart, pointer+1, 0xFFFFFFFF); + itoa((u32)fracpart, pointer+1, 10 , precision, '0'); } return pointer; } @@ -562,30 +562,38 @@ u8 *itoa(u64 orignum, u8 * str, u8 base, u64 dim, u8 achar) { u8 *pointer = str, i, size = 0; u64 num = orignum; - num &= dim; - if (num == 0 && (achar == 0)) { - *(pointer++) = '0'; - *pointer = '\000'; - return pointer; - } - switch (base) { - case 2: - size = log2(dim); - break; - case 8: - size = log2(dim) / 2; - break; - case 10: - size = log10(dim); - break; - case 16: - size = log2(dim) / 4; - break; - } + if (dim>=0xFF) + { + num &= dim; + if ((num == 0) && (achar == 0)) { + *(pointer++) = '0'; + *pointer = '\000'; + return pointer; + } + switch (base) { + case 2: + size = log2(dim); + break; + case 8: + size = log2(dim) / 2; + break; + case 10: + size = log10(dim); + break; + case 16: + size = log2(dim) / 4; + break; + } + } + else + size=dim; for (i = 0; i < size; i++) { if (num == 0) { + if (i==0) + *(pointer++) = '0'; + else + *(pointer++) = achar; if (achar == 0) break; - *(pointer++) = achar; } else { diff --git a/system/system.c b/system/system.c index 262b35a..b63ed2c 100755 --- a/system/system.c +++ b/system/system.c @@ -109,7 +109,7 @@ int main(u32 magic, u32 addr) float test=3.14f; double test2=3.14; - printf(" -Test float & double %f %lf %f %f %f %f",test,test2,0.1212412544f,0.1f,15545487.0f,0.0001f); + printf(" -Test float & double %f %lf %f %f %f %f",test,test2,0.1212412544f,0.1f,15545485425425425425425425425427878787.0f,0.0001f); retry: shell(); }