public virtual void PrintFloat(float value) {
// Use symbolic names for common constants
if (float.IsNaN(value))
sourceEmitterOutput.Write("float.NaN");
else if (float.IsPositiveInfinity(value))
sourceEmitterOutput.Write("float.PositiveInfinity");
else if (float.IsNegativeInfinity(value))
sourceEmitterOutput.Write("float.NegativeInfinity");
else if (value == float.Epsilon)
sourceEmitterOutput.Write("float.Epsilon");
else if (value == float.MaxValue)
sourceEmitterOutput.Write("float.MaxValue");
else if (value == float.MinValue)
sourceEmitterOutput.Write("float.MinValue");
else
sourceEmitterOutput.Write(value.ToString("R") + "f"); // round-trip format
}