1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-10 04:22:20 +02:00

Improved double ToString

This commit is contained in:
Brian Fiete 2022-08-25 12:32:51 -07:00
parent 5dfe300599
commit cb13198609

View file

@ -1048,6 +1048,46 @@ static int ToString(double d, char* outStr, bool roundTrip)
if (!roundTrip)
{
int digits;
if (d < 0)
{
if (d < -10000000000)
{
sprintf(outStr, "%g", d);
}
else
{
if (d < -1000000000)
digits = 1;
else if (d < -100000000)
digits = 2;
else if (d < -10000000)
digits = 3;
else if (d < -1000000)
digits = 4;
else if (d < -100000)
digits = 5;
else if (d < -10000)
digits = 6;
else if (d < -1000)
digits = 7;
else if (d < -100)
digits = 8;
else if (d < -10)
digits = 9;
else
digits = 10;
sprintf(outStr, "%1.*f", digits, d);
}
}
else
{
if (d > 10000000000)
{
sprintf(outStr, "%g", d);
}
else
{
if (d > 1000000000)
digits = 1;
else if (d > 100000000)
@ -1071,6 +1111,8 @@ static int ToString(double d, char* outStr, bool roundTrip)
sprintf(outStr, "%1.*f", digits, d);
}
}
}
else
sprintf(outStr, "%1.17g", d);