# Degrees to Radians to Degrees

The C language uses radians instead of degrees when calculating angles. Humans should use radians as well, as they’re logical and easy to work with (radians, not humans). What surprises me, however, is that the C library lacks a defined constant for making the degree-radian conversion.

You can bone on up radians with this blog post from two years ago. This information won’t help you do the conversions in C, not as much as having a defined constant would.

For example, the `math.h` header file defines the `M_PI` constant, which represents the value of π. Just include `math.h` in your source code, and you can use `M_PI` to represent π without having to rely upon your Mensa friend who is odious but has memorized π out to the 250th digit.

For the conversion between radians and degrees, however, you must rely upon written documentation — or that same odious nerd — to know these two formulas:

So when Joe User types 180 degrees into your trigonometric program, you must convert this value into radians to use the various C library trig functions:

`radians = joe_user_degree_input / 57.29578;`

My argument is that it would be easier to plug in a defined constant, which is oddly missing from the `math.h` header. So why not create your own?

The following code uses the `M_PI` constant from `math.h` to calculate two new defined constants, `RAD2DEG` for converting radians to degrees, and `DEG2RAD` for converting degrees to radians.

### 2020_05_23-Lesson.c

```#include <stdio.h>
#include <math.h>

#ifndef M_PI
#define M_PI 3.141592
#endif

int main()
{

return(0);
}```

Lines 4 through 6 ensure that the `M_PI` defined constant exists. If not, Line 5 defines it as a single-precision value — good enough for most common trig problems.

Line 7 declares the `RAD2DEG` defined constant, and Line 8 declares the `DEG2RAD` constant.

Here’s the output:

```Convert radians to degrees: 0.017453 Convert degrees to radians: 57.295780```

Yes, it probably would be easier to just declare both defined constants like this:

```#define RAD2DEG 0.017453 #define DEG2RAD 57.295780```

This approach is cleaner, and it’s how the `math.h` header file defines other mathematical constants; values are specified directly. Still, if somehow the value of π changes in the universe, the approach shown in the sample code remains valid. You never want to take a chance.