Floating point types let you store numbers with decimals. They help when you need to work with fractions or very precise values.
Floating point types (float, double, decimal) in C Sharp (C#)
float myFloat = 3.14f; double myDouble = 3.14; decimal myDecimal = 3.14m;
Use f after a number to tell C# it is a float.
Use m after a number to tell C# it is a decimal.
f is needed.float temperature = 36.6f;
double distance = 12345.6789;
m suffix is required for decimals.decimal price = 19.99m;This program shows how to declare and print float, double, and decimal values.
using System; class Program { static void Main() { float myFloat = 3.14f; double myDouble = 3.14; decimal myDecimal = 3.14m; Console.WriteLine($"Float value: {myFloat}"); Console.WriteLine($"Double value: {myDouble}"); Console.WriteLine($"Decimal value: {myDecimal}"); } }
Float uses 4 bytes and is less precise.
Double uses 8 bytes and is more precise than float.
Decimal uses 16 bytes and is best for money because it is very precise.
Float, double, and decimal store numbers with decimals.
Use f for float and m for decimal when writing numbers.
Decimal is best for money, double for general decimals, float for less precise decimals.
Practice
Which C# type is best to store money values accurately?
Solution
Step 1: Understand precision needs for money
Money values require high precision and no rounding errors.Step 2: Compare types for precision
decimal type provides high precision and is designed for financial calculations.Final Answer:
decimal -> Option DQuick Check:
Money uses decimal for accuracy [OK]
- Choosing float or double for money causes precision loss
- Using int for decimal values
- Forgetting to add 'm' suffix for decimal literals
Which of the following is the correct way to declare a float variable with value 3.14?
?
Solution
Step 1: Recall float literal syntax
Float literals require an 'f' suffix to specify the type explicitly.Step 2: Check each option
float pi = 3.14f; uses 3.14f which is correct. float pi = 3.14; lacks suffix, so treated as double. float pi = 3.14m; uses 'm' for decimal, wrong type. float pi = 3.14d; assigns double literal to float, compilation error.Final Answer:
float pi = 3.14f; -> Option CQuick Check:
Float literals need 'f' suffix [OK]
- Omitting 'f' suffix causes errors
- Using 'm' suffix for float
- Assigning double literal directly to float
What is the output of this C# code?
float a = 0.1f; double b = 0.1; Console.WriteLine(a == b);
Solution
Step 1: Understand operator restrictions
C# allows comparison between float and double by promoting float to double.Step 2: Evaluate the comparison
float a = 0.1f is less precise than double b = 0.1, so when promoted to double, a != b due to precision differences.Final Answer:
False -> Option AQuick Check:
float 0.1f != double 0.1 due to precision [OK]
- Assuming float equals double for same number
- Thinking it causes compilation error
- Expecting runtime exception
Identify the error in this code snippet:
decimal price = 19.99m; float discount = 0.1f; decimal finalPrice = price - discount;
Solution
Step 1: Check literal suffixes
decimal uses 19.99m (correct 'm' suffix), float uses 0.1f (correct).Step 2: Check operation between decimal and float
Subtracting float from decimal is invalid without explicit conversion.Final Answer:
Cannot subtract float from decimal directly -> Option AQuick Check:
decimal and float arithmetic needs explicit casts [OK]
- Ignoring type mismatch in arithmetic
- Forgetting 'm' suffix for decimal literals
- Assuming implicit conversion between float and decimal
You want to store the value 123.4567890123456789 with the highest precision possible in C#. Which type should you choose and how should you write the literal?
Solution
Step 1: Understand precision limits of types
float has ~7 digits precision, double ~15-17 digits, decimal ~28-29 digits.Step 2: Choose type and literal suffix
decimal provides highest precision and requires 'm' suffix for literals.Final Answer:
Use decimal and write 123.4567890123456789m -> Option BQuick Check:
decimal + 'm' suffix = highest precision [OK]
- Using float or double for high precision
- Omitting 'm' suffix for decimal literals
- Assuming double is more precise than decimal
Ready to prove it?
Pass the test and this pattern moves unknown
