mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-14 14:24:10 +02:00
Improved double ToString
This commit is contained in:
parent
5dfe300599
commit
cb13198609
1 changed files with 109 additions and 67 deletions
|
@ -1048,6 +1048,46 @@ static int ToString(double d, char* outStr, bool roundTrip)
|
||||||
if (!roundTrip)
|
if (!roundTrip)
|
||||||
{
|
{
|
||||||
int digits;
|
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)
|
if (d > 1000000000)
|
||||||
digits = 1;
|
digits = 1;
|
||||||
else if (d > 100000000)
|
else if (d > 100000000)
|
||||||
|
@ -1071,6 +1111,8 @@ static int ToString(double d, char* outStr, bool roundTrip)
|
||||||
|
|
||||||
sprintf(outStr, "%1.*f", digits, d);
|
sprintf(outStr, "%1.*f", digits, d);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
sprintf(outStr, "%1.17g", d);
|
sprintf(outStr, "%1.17g", d);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue