示例#1
0
        /// <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)));
            }
        }
示例#2
0
        /// <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));
        }
示例#3
0
        /// <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");
                }
            }
        }