# double (C# Reference)

**Visual Studio 2015**

The **double** keyword signifies a simple type that stores 64-bit floating-point values. The following table shows the precision and approximate range for the **double** type.

Type | Approximate range | Precision | .NET Framework type |
---|---|---|---|

| ±5.0 × 10−324 to ±1.7 × 10308 | 15-16 digits |

By default, a real numeric literal on the right side of the assignment operator is treated as **double**. However, if you want an integer number to be treated as **double**, use the suffix d or D, for example:

double x = 3D;

You can mix numeric integral types and floating-point types in an expression. In this case, the integral types are converted to floating-point types. The evaluation of the expression is performed according to the following rules:

If one of the floating-point types is

**double**, the expression evaluates to**double**, or bool in relational or Boolean expressions.If there is no

**double**type in the expression, it evaluates to float, or bool in relational or Boolean expressions.

A floating-point expression can contain the following sets of values:

Positive and negative zero.

Positive and negative infinity.

Not-a-Number value (NaN).

The finite set of nonzero values.

For more information about these values, see IEEE Standard for Binary Floating-Point Arithmetic, available on the IEEE Web site.

## Example

// Mixing types in expressions class MixedTypes { static void Main() { int x = 3; float y = 4.5f; short z = 5; double w = 1.7E+3; // Result of the 2nd argument is a double: Console.WriteLine("The sum is {0}", x + y + z + w); } } // Output: The sum is 1712.5

For more information, see the C# Language Specification. The language specification is the definitive source for C# syntax and usage.