# 12.3. The `Math`

Class¶

C# has a few built in classes that can be called directly by the user.
Arrays, collections, strings are only a few.
One of these classes is the `Math`

class,
which contains more than just the standard mathematical operations(`+`

, `-`

, `*`

, `/`

).

In the previous sections we learned how to construct, modify, and use classes to create objects. However built-in C# classes are not allowed to be modified. The fields and methods available are what you get.

The `Math`

class is `static`

; containing `static`

methods and `const`

fields.

## 12.3.1. `Math`

Class is `static`

¶

The `Math`

methods are all static.
We do not have to instantiate the `Math`

class in order to use it.
It is part of the `using System`

that is commonly found in your C# IDEs, like the `Console`

class.

When we want to use members of the `Math`

class, we need to directly call the class then the member name.

```
Math.Round(3.293823, 2);
```

However, if we want to do something with the output of this `Math.Round`

method, we will need to store it in a variable.
Being `static`

, it cannot create its own instance.

The `Math`

class has built-in methods that you can call. We will review a few in this chapter, but for a complete list
you can read the documentation on the `Math`

Class.

## 12.3.2. `Math`

Methods Are `static`

¶

The `Math`

Class contains several mathematical and trigonometric methods.

C# Syntax | Description | Example |
---|---|---|

Abs() | Returns the absolute value, or positive value, of a number. Can be used with any numeric type. | `Math.Abs(number)` |

Ceiling() | Rounds the `double` or `decimal` value UP to the closest whole number. |
`Math.Ceiling(number)` |

Floor() | Rounds the `double` or `decimal` value DOWN to the closest whole number. |
`Math.Floor(number)` |

Max() | Returns larger of 2 numeric types. | `Math.Max(number1, number2)` |

Min() | Returns smaller of 2 numeric types. | `Math.Min(number1, number2)` |

Pow() | Returns specified number raised to specified power. Takes `double` types. |
`Math.Pow(number, power)` |

Round() | Returns number rounded to nearest integral value OR specified number of decimal places | `Math.Round(number)` OR `Math.Round(number, decimalPlaces)` |

Sqrt() | Returns the square root of specified number. Takes `double` types. |
`Math.Sqrt(double)` |

Truncate() | Removes any decimals and returns interger part of number. Takes `double` or `decimal` types. |
`Math.Truncate(double)` |

## 12.3.3. `Math`

Fields Are Constants¶

Having a built in `Math`

class can be very helpful when it comes to common math elements, such as `PI`

.

One of the benefits of constant values is that you don’t have to memorize them, or define them in a variable. C# stores the value of pi up to 16 decimal places for us. We just need to use dot notaion and we can access this class field.

Example

1 2 3 | ```
Console.WriteLine(Math.PI);
Console.WriteLine(Math.PI*4);
Console.WriteLine(Math.PI + Math.PI);
``` |

**Console Output**

```
3.14159265358979
12.5663706143592
6.28318530717959
```

However, this value is a constant, or `const`

. You are NOT able to alter it.
`const`

values are fixed and unable to be updated or overwritten.

Example

1 2 3 4 5 | ```
Console.WriteLine(Math.PI);
double Math.PI = 1234.56;
Console.WriteLine(Math.PI);
``` |

**Console Output**

```
3.1415926535897931
error CS1525: Unexpected symbol `.', expecting `,', `;', or `='
```

The error message shows that the compiler was not expecting you to try and update `Math.PI`

.
Again, users are not allowed to update the `Math.PI`

field.

C# Syntax | Description | Example |
---|---|---|

`Math.PI` |
Ratio of circumference of a circle to its diameter. | 3.1415926535897931 |

## 12.3.4. Check Your Understanding¶

Question

Which of the following returns `-3`

when applied to `-3.87`

?

- Math.Floor(-3.87);
- Math.Abs(-3.87);
- Math.Round(-3.87);
- Math.Truncate(-3.87);