Add single <-> double conversions.

- With explicit casting now possible, converting from double to single
  precision floating point and back again needs to be possible, too.
This commit is contained in:
Randy Heit 2013-11-01 21:45:02 -05:00
commit 3063df4f74
2 changed files with 29 additions and 2 deletions

View file

@ -160,10 +160,15 @@ public:
size_t len = mysnprintf(buf, countof(buf), "%08x", x);
Add(buf, len);
}
void AddFloat(double f)
void AddFloat(double f, bool single)
{
char buf[32];
size_t len = mysnprintf(buf, countof(buf), "%.4f", f);
if (single)
{
buf[len++] = 'f';
buf[len] = '\0';
}
Add(buf, len);
}
private:
@ -501,7 +506,11 @@ static void PrintExprConstant(FLispString &out, ZCC_TreeNode *node)
}
else if (enode->Type == TypeFloat64)
{
out.AddFloat(enode->DoubleVal);
out.AddFloat(enode->DoubleVal, false);
}
else if (enode->Type == TypeFloat32)
{
out.AddFloat(enode->DoubleVal, true);
}
else if (enode->Type == TypeName)
{