Given a floating-point number, check whether it is even or odd.
We can check whether a integer is even or odd by dividing its last digit by 2. But in case of floating point number we can’t check a given number is even or odd by just dividing its last digit by 2. For example, 100.70 is an odd number but its last digit is divisible by 2.
Examples :
Input : 100.7 Output : odd Input : 98.8 Output : even Input : 100.70 Output : odd Trailing 0s after dot do not matter.
Approach :
- We start traversing a number from its LSB until we get a non-zero digit or ‘.’
- If the number is divisible by 2 it is even else odd
- If it is ‘.’ than it means decimal part of number is traversed and now we can check number is even or odd by dividing number by 2 whether it is 0 or non zero digit.
Below is the implementation of above approach :
C++
// CPP program to check whether given floating // point number is even or odd #include <bits/stdc++.h> using namespace std;
// Function to check even or odd. bool isEven(string s)
{ int l = s.length();
// Loop to traverse number from LSB
bool dotSeen = false ;
for ( int i = l - 1; i >= 0; i--) {
// We ignore trailing 0s after dot
if (s[i] == '0' && dotSeen == false )
continue ;
// If it is '.' we will check next digit and it
// means decimal part is traversed.
if (s[i] == '.' ) {
dotSeen = true ;
continue ;
}
// If digit is divisible by 2
// means even number.
if ((s[i] - '0' ) % 2 == 0)
return true ;
return false ;
}
} // Driver Function int main()
{ string s = "100.70" ;
if (isEven(s))
cout << "Even" ;
else
cout << "Odd" ;
return 0;
} |
Java
// Java program to check whether given floating // point number is even or odd import java.util.*;
import java.lang.*;
public class GfG {
// Function to check even or odd.
public static boolean isEven(String s1)
{
int l = s1.length();
char [] s = s1.toCharArray();
// Loop to traverse number from LSB
boolean dotSeen = false ;
for ( int i = l - 1 ; i >= 0 ; i--) {
// We ignore trailing 0s after dot
if (s[i] == '0' && dotSeen == false )
continue ;
// If it is '.' we will check next digit and it
// means decimal part is traversed.
if (s[i] == '.' ) {
dotSeen = true ;
continue ;
}
// If digit is divisible by 2
// means even number.
if ((s[i] - '0' ) % 2 == 0 )
return true ;
return false ;
}
return false ;
}
// Driver function
public static void main(String argc[])
{
String s = "100.70" ;
if (isEven(s))
System.out.println( "Even" );
else
System.out.println( "Odd" );
}
} /* This code is contributed by Sagar Shukla */ |
Python3
# Python 3 program to check # whether given floating # point number is even or odd # Function to check # even or odd. def isEven(s) :
l = len (s)
# Loop to traverse
# number from LSB
dotSeen = False
for i in range (l - 1 , - 1 , - 1 ) :
# We ignore trailing
# 0s after dot
if (s[i] = = '0'
and dotSeen = = False ) :
continue
# If it is '.' we will
# check next digit and it
# means decimal part is
# traversed.
if (s[i] = = '.' ) :
dotSeen = True
continue
# If digit is
# divisible by 2
# means even number.
if (( int )(s[i]) % 2 = = 0 ) :
return True
return False # Driver Function s = "100.70"
if (isEven(s)) :
print ( "Even" )
else :
print ( "Odd" )
# This code is contributed # by Nikita Tiwari. |
C#
// C# program to check whether given floating // point number is even or odd using System;
public class GfG {
// Function to check even or odd.
public static bool isEven( string s1)
{
int l = s1.Length;
// char[] s = s1.toCharArray();
// Loop to traverse number from LSB
bool dotSeen = false ;
for ( int i = l - 1; i >= 0; i--) {
// We ignore trailing 0s after dot
if (s1[i] == '0' && dotSeen == false )
continue ;
// If it is '.' we will check next
// digit and it means decimal part
// is traversed.
if (s1[i] == '.' ) {
dotSeen = true ;
continue ;
}
// If digit is divisible by 2
// means even number.
if ((s1[i] - '0' ) % 2 == 0)
return true ;
return false ;
}
return false ;
}
// Driver function
public static void Main()
{
string s1 = "100.70" ;
if (isEven(s1))
Console.WriteLine( "Even" );
else
Console.WriteLine( "Odd" );
}
} /* This code is contributed by Vt_m */ |
PHP
<?php // PHP program to check // whether given floating // point number is even or odd // Function to check // even or odd. function isEven( $s )
{ $l = strlen ( $s );
// Loop to traverse
// number from LSB
$dotSeen = false;
for ( $i = $l - 1; $i >= 0; $i --)
{
// We ignore trailing
// 0s after dot
if ( $s [ $i ] == '0' && $dotSeen == false)
continue ;
// If it is '.' we will
// check next digit and it
// means decimal part is
// traversed.
if ( $s [ $i ] == '.' )
{
$dotSeen = true;
continue ;
}
// If digit is divisible by 2
// means even number.
if (( $s [ $i ] - '0' ) % 2 == 0)
return true;
return false;
}
} // Driver Code
$s = "100.70" ;
if (isEven( $s ))
echo "Even" ;
else
echo "Odd" ;
// This code is contributed by aj_36 ?> |
Javascript
<script> // Javascript program to check // whether given floating // point number is even or odd // Function to check // even or odd. function isEven(s)
{ let l = s.length;
// Loop to traverse
// number from LSB
let dotSeen = false ;
for (let i = l - 1; i >= 0; i--)
{
// We ignore trailing
// 0s after dot
if (s[i] == '0' && dotSeen == false )
continue ;
// If it is '.' we will
// check next digit and it
// means decimal part is
// traversed.
if (s[i] == '.' )
{
dotSeen = true ;
continue ;
}
// If digit is divisible by 2
// means even number.
if ((s[i] - '0' ) % 2 == 0)
return true ;
return false ;
}
} // Driver Code
let s = "100.70" ;
if (isEven(s))
document.write( "Even" );
else
document.write( "Odd" );
// This code is contributed by gfgking </script> |
Output
Odd
Time Complexity: O(|s|)
Auxiliary Space: O(1)