This type represents a floating-point number. The C# language provides this type as a single-precision floating point number representation.
Float is less precise than a double
. It occupies four bytes and is no larger than an int
. Float can help maintain compatibility with other programs.
You will need to use the character suffix "f" or "F" on constants you want to be treated as float
values. If you don't specify "f" or "F", you will get a compile-time error.
using System; float val1 = 1.001f; // Lowercase f suffix. float val2 = 1.002F; // Uppercase F suffix. Console.WriteLine(val1); Console.WriteLine(val2);1.001 1.002
float
You can convert floats to strings, either with ToString
or through Console.WriteLine
. You can use negative floating point numbers.
typeof
(float
) in the program, as well as the GetType
method, both return the System.Single
type.float
keyword to System.Single
so they are precisely equivalent.float
, which is the same as the int
type.using System; // Use float type. float number = 1.5F; Console.WriteLine(number); // Set to negative value. number = -1.001F; Console.WriteLine(number); Console.WriteLine(number == -1.001F); // Use == operator Console.WriteLine(number + 200); // Use + operator Console.WriteLine(number.GetType()); Console.WriteLine(typeof(float)); Console.WriteLine(float.MinValue.ToString("0")); Console.WriteLine(float.MaxValue.ToString("0")); // Find the memory usage for a float value. long bytes1 = GC.GetTotalMemory(false); float[] array = new float[1000 * 1000]; array[0] = 1; long bytes2 = GC.GetTotalMemory(false); Console.WriteLine("{0} bytes per float", ((bytes2 - bytes1) / (1000000)));1.5 -1.001 True 198.999 System.Single System.Single -340282300000000000000000000000000000000 340282300000000000000000000000000000000 4 bytes per float
This program shows the float.Epsilon
constant, which is the smallest float
value greater than zero. The NaN constant represents not a number.
NegativeInfinity
and PositiveInfinity
constants are tested with float.IsNegativeInfinity
and float.IsPositiveInfinity
.using System; Console.WriteLine(float.Epsilon); Console.WriteLine(float.NaN); Console.WriteLine(float.NegativeInfinity); Console.WriteLine(float.PositiveInfinity);1.401298E-45 NaN -Infinity Infinity
One major problem with comparing two float
values is that they may be almost, but not exactly, equal. Your program probably wants to consider the two values equal.
float.Epsilon
constant is the smallest possible float
value.float.Epsilon
.Typically, if you need to use floating point numbers, using the double
type instead is a better choice because it has more precision and is probably more common.
double
type uses more memory than the float
type. In a large array this difference becomes relevant.float
instead of a double
can be beneficial if you are sure the loss of precision is immaterial.Float is often used for compatibility issues when you need to represent floating-point numbers. Double
is usually better for storing large numbers with decimals.