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