summaryrefslogtreecommitdiff
path: root/platform/utilities/src/print_scan.c
diff options
context:
space:
mode:
Diffstat (limited to 'platform/utilities/src/print_scan.c')
-rw-r--r--platform/utilities/src/print_scan.c32
1 files changed, 20 insertions, 12 deletions
diff --git a/platform/utilities/src/print_scan.c b/platform/utilities/src/print_scan.c
index 01667af..6c09099 100644
--- a/platform/utilities/src/print_scan.c
+++ b/platform/utilities/src/print_scan.c
@@ -756,7 +756,7 @@ static int32_t mkfloatnumstr (char *numstr, void *nump, int32_t radix, uint32_t
for (i = 0; i < precision_width; i++)
{
fb = fa / (int32_t)radix;
- c = (int32_t)(fa - (uint64_t)fb * (int32_t)radix);
+ c = (int32_t)(fa - (int64_t)fb * (int32_t)radix);
if (c < 0)
{
c = ~c + 1 + '0';
@@ -771,20 +771,28 @@ static int32_t mkfloatnumstr (char *numstr, void *nump, int32_t radix, uint32_t
*nstrp++ = (char)'.';
++nlen;
a = (int32_t)intpart;
- while (a != 0)
+ if(a == 0)
{
- b = (int32_t)a / (int32_t)radix;
- c = (int32_t)a - ((int32_t)b * (int32_t)radix);
- if (c < 0)
- {
- c = ~c + 1 + '0';
- }else
+ *nstrp++ = '0';
+ ++nlen;
+ }
+ else
+ {
+ while (a != 0)
{
- c = c + '0';
+ b = (int32_t)a / (int32_t)radix;
+ c = (int32_t)a - ((int32_t)b * (int32_t)radix);
+ if (c < 0)
+ {
+ c = ~c + 1 + '0';
+ }else
+ {
+ c = c + '0';
+ }
+ a = b;
+ *nstrp++ = (char)c;
+ ++nlen;
}
- a = b;
- *nstrp++ = (char)c;
- ++nlen;
}
done:
return nlen;