Program to compute division upto n decimal places
Last Updated :
17 Feb, 2023
Given 3 numbers x, y and n compute the division (x/y) upto n decimal places.
Examples :
Input : x = 22, y = 7, n = 10
Output : 3.1428571428
Explanation : Since n = 10, division (x / y) is taken till 10 decimal places.
Input : x = 22, y = 7, n = 20
Output : 3.14285714285714285714
Approach :
- Get the remainder and get it subtracted by the dividend, multiply it by ten and go to the next iteration.
- If we reach the complete result, we may not need to continue until the pre-defined number of iterations are reached.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
void precisionCompute( int x, int y, int n)
{
if (y == 0) {
cout << "Infinite" << endl;
return ;
}
if (x == 0) {
cout << 0 << endl;
return ;
}
if (n <= 0) {
cout << x / y << endl;
return ;
}
if (((x > 0) && (y < 0)) || ((x < 0) && (y > 0))) {
cout << "-" ;
x = x > 0 ? x : -x;
y = y > 0 ? y : -y;
}
int d = x / y;
for ( int i = 0; i <= n; i++) {
cout << d;
x = x - (y * d);
if (x == 0)
break ;
x = x * 10;
d = x / y;
if (i == 0)
cout << "." ;
}
}
int main()
{
int x = 22, y = 7, n = 15;
precisionCompute(x, y, n);
return 0;
}
|
Java
import java.util.*;
class Eulerian {
public static void precisionCompute( int x, int y, int n)
{
if (y == 0 ) {
System.out.print( "Infinite" );
return ;
}
if (x == 0 ) {
System.out.print( "0" );
return ;
}
if (n <= 0 ) {
System.out.print(x / y);
return ;
}
if (((x > 0 ) && (y < 0 )) || ((x < 0 ) && (y > 0 ))) {
System.out.print( "-" );
x = x > 0 ? x : -x;
y = y > 0 ? y : -y;
}
int d = x / y;
for ( int i = 0 ; i <= n; i++) {
System.out.print(d);
x = x - (y * d);
if (x == 0 )
break ;
x = x * 10 ;
d = x / y;
if (i == 0 )
System.out.print( "." );
}
}
public static void main(String[] args)
{
int x = 22 , y = 7 , n = 15 ;
precisionCompute(x, y, n);
}
}
|
C#
using System;
class Eulerian {
public static void precisionCompute( int x, int y,
int n)
{
if (y == 0) {
Console.WriteLine( "Infinite" );
return ;
}
if (x == 0) {
Console.WriteLine( "0" );
return ;
}
if (n <= 0) {
Console.WriteLine(x / y);
return ;
}
if (((x > 0) && (y < 0)) || ((x < 0) && (y > 0))) {
Console.WriteLine( "-" );
x = x > 0 ? x : -x;
y = y > 0 ? y : -y;
}
int d = x / y;
for ( int i = 0; i <= n; i++) {
Console.Write(d);
x = x - (y * d);
if (x == 0)
break ;
x = x * 10;
d = x / y;
if (i == 0)
Console.Write( "." );
}
}
public static void Main()
{
int x = 22, y = 7, n = 15;
precisionCompute(x, y, n);
}
}
|
PHP
<?php
function precisionCompute( $x , $y , $n )
{
if ( $y == 0)
{
echo "Infinite" , "\n" ;
return ;
}
if ( $x == 0)
{
echo 0, "\n" ;
return ;
}
if ( $n <= 0)
{
echo $x / $y , "\n" ;
return ;
}
if ((( $x > 0) && ( $y < 0)) ||
(( $x < 0) && ( $y > 0)))
{
echo "-" ;
$x = $x > 0 ? $x : - $x ;
$y = $y > 0 ? $y : - $y ;
}
$d = $x / $y ;
for ( $i = 0; $i <= $n ; $i ++)
{
echo $d ;
$x = $x - ( $y * $d );
if ( $x == 0)
break ;
$x = $x * 10;
$d = $x / $y ;
if ( $i == 0)
echo "." ;
}
}
$x = 22; $y = 7; $n = 15;
precisionCompute( $x , $y , $n );
?>
|
Python3
def precisionCompute(x, y, n):
if y = = 0 :
print ( "Infinite" );
return ;
if x = = 0 :
print ( 0 );
return ;
if n < = 0 :
print (x / y);
return ;
if (((x > 0 ) and (y < 0 )) or
((x < 0 ) and (y > 0 ))):
print ( "-" , end = "");
if x < 0 :
x = - x;
if y < 0 :
y = - y;
d = x / y;
for i in range ( 0 , n + 1 ):
print (d);
x = x - (y * d);
if x = = 0 :
break ;
x = x * 10 ;
d = x / y;
if (i = = 0 ):
print ( "." , end = "");
x = 22 ;
y = 7 ;
n = 15 ;
precisionCompute(x, y, n);
|
Javascript
<script>
function precisionCompute(x, y, n)
{
if (y == 0) {
document.write( "Infinite" );
return ;
}
if (x == 0) {
document.write( "0" );
return ;
}
if (n <= 0) {
document.write(x / y);
return ;
}
if (((x > 0) && (y < 0)) || ((x < 0) && (y > 0))) {
document.write( "-" );
x = x > 0 ? x : -x;
y = y > 0 ? y : -y;
}
let d = x / y;
for (let i = 0; i <= n; i++) {
document.write(d);
x = x - (y * d);
if (x == 0)
break ;
x = x * 10;
d = x / y;
if (i == 0)
document.write( "." );
}
}
let x = 22, y = 7, n = 15;
precisionCompute(x, y, n);
</script>
|
Output :
3.142857142857142
Time complexity: O(n)
Auxiliary space: O(1)
Share your thoughts in the comments
Please Login to comment...