Home »
C programming language
Modulus of two float or double numbers in C language
C language | Modulus of two float or double numbers: Here, we will learn how can we find the modulus/remainder of non-integer values in C language?
Submitted by IncludeHelp, on June 26, 2020
Modulus of two float or double numbers in C
As we know that modules also known as the remainder of the two numbers can be found using the modulus (%) operator which is an arithmetic operator in C/C++. The modules operator works with integer values i.e. modulus operator is used to find the remainder of two integer numbers. If the numbers are float or double the the modulus operators doesn't work.
Example
Consider the below example,
#include <stdio.h>
int main()
{
float x = 10.23f;
float y = 3.1f;
float result = x % y;
printf("result = %f\n", result);
return 0;
}
Output:
main.c: In function ‘main’:
main.c:8:22: error: invalid operands to binary % (have ‘float’ and ‘float’)
float result = x % y;
^
See the output – it says that invalid operands to modulus operator.
How to find the remainder/modulus of two float or double numbers in C?
There is a library function remainder(), declared in math.h. It can be used to find the modules of float, double, and integer (also) numbers.
The remainder() function accepts two parameters and returns the remainder.
Syntax
remainder(x, y);
Here, x and y are the floating-point or integral values.
Example 1
#include <stdio.h>
#include <math.h>
int main()
{
float x = 10.23f;
float y = 3.1f;
float result = remainder(x, y);
printf("result = %f\n", result);
return 0;
}
Output:
result = 0.930000
Example 2
#include <stdio.h>
#include <math.h>
int main()
{
// integer numbers
int a = 10;
int b = 3;
// float numbers
float m = 10.23f;
float n = 3.1f;
// double numbers
double x = 123456789.10;
double y = 1233.1;
printf("remainder(%d,%d) = %lf\n", a, b, remainder(a, b));
printf("remainder(%f,%f) = %lf\n", m, n, remainder(m, n));
printf("remainder(%lf,%lf) = %lf\n", x, y, remainder(x, y));
return 0;
}
Output:
remainder(10,3) = 1.000000
remainder(10.230000,3.100000) = 0.930000
remainder(123456789.100000,1233.100000) = 50.200000