/// <summary> /// Write a float value. /// </summary> /// <param name="writer">The text writer to write the output to.</param> /// <param name="value">Float value to be written.</param> internal static Task WriteValueAsync(this TextWriter writer, float value) { Debug.Assert(writer != null, "writer != null"); if (JsonSharedUtils.IsFloatValueSerializedAsString(value)) { return(writer.WriteQuotedAsync(value.ToString(ODataNumberFormatInfo))); } else { // float.ToString() supports a max scale of six, // whereas float.MinValue and float.MaxValue have 8 digits scale. Hence we need // to use XmlConvert in all other cases, except infinity return(writer.WriteAsync(XmlConvert.ToString(value))); } }
/// <summary> /// Write a double value. /// </summary> /// <param name="writer">The text writer to write the output to.</param> /// <param name="value">Double value to be written.</param> internal static Task WriteValueAsync(this TextWriter writer, double value) { Debug.Assert(writer != null, "writer != null"); if (JsonSharedUtils.IsDoubleValueSerializedAsString(value)) { return(writer.WriteQuotedAsync(value.ToString(ODataNumberFormatInfo))); } // double.ToString() supports a max scale of 14, // whereas double.MinValue and double.MaxValue have 16 digits scale. Hence we need // to use XmlConvert in all other cases, except infinity string valueToWrite = XmlConvert.ToString(value); if (valueToWrite.IndexOfAny(DoubleIndicatingCharacters) < 0) { valueToWrite += ".0"; } return(writer.WriteAsync(valueToWrite)); }
/// <summary> /// Write a double value. /// </summary> /// <param name="writer">The text writer to write the output to.</param> /// <param name="value">Double value to be written.</param> internal static void WriteValue(TextWriter writer, double value) { Debug.Assert(writer != null, "writer != null"); if (JsonSharedUtils.IsDoubleValueSerializedAsString(value)) { JsonValueUtils.WriteQuoted(writer, value.ToString(JsonValueUtils.ODataNumberFormatInfo)); } else { // double.ToString() supports a max scale of 14, // whereas double.MinValue and double.MaxValue have 16 digits scale. Hence we need // to use XmlConvert in all other cases, except infinity string valueToWrite = XmlConvert.ToString(value); writer.Write(valueToWrite); if (valueToWrite.IndexOfAny(JsonValueUtils.DoubleIndicatingCharacters) < 0) { writer.Write(".0"); } } }