Redondear un número a un número dado de dígitos significativos

Dado un número positivo n (n > 1), redondea este número a un número dado. de dígitos significativos, d.
Ejemplos: 
 

Input : n = 139.59
        d = 4
Output : The number after rounding-off is 139.6 .

The number 139.59 has 5 significant figures and for rounding-off 
the number to 4 significant figures, 139.59 is converted to 139.6 .

Input : n = 1240
        d = 2
Output : The number after rounding-off is 1200 .

¿Qué son las cifras significativas?

Cada uno de los dígitos de un número que se utilizan para expresarlo con el grado de precisión requerido, a partir del primer dígito distinto de cero, se denominan cifras significativas.
Dado que hay números con una gran cantidad de dígitos, por ejemplo,  \frac{22}{7}  = 3,142857143, para limitar dichos números a una cantidad manejable de dígitos, eliminamos los dígitos no deseados y este proceso se llama redondeo .
Los dígitos significativos incluyen todos los dígitos de un número que se encuentran en una de las siguientes categorías: 
 

  • Todos los dígitos distintos de cero.
  • Cero dígitos que- 
    1. se encuentran entre dígitos significativos.
    2. se encuentran a la derecha del punto decimal y al mismo tiempo a la derecha de un dígito distinto de cero.
    3. están específicamente indicados como significativos.

La siguiente tabla muestra números y no. de dígitos significativos presentes en ellos –
 

Reglas para redondear un número

Para redondear un número a n cifras significativas- 
 

  1. Deseche todos los dígitos a la derecha del n -ésimo dígito significativo.
  2. Si este número descartado es- 
    • menos de la mitad de una unidad en el lugar n, deje el dígito n sin cambios .
    • mayor que la mitad de una unidad en el lugar n, aumente el dígito n en la unidad .
    • exactamente la mitad de una unidad en el n -ésimo lugar, aumente el n -ésimo dígito en la unidad si es impar, de lo contrario déjelo sin cambios.

La siguiente tabla muestra el redondeo de un número a un número dado. de dígitos significativos –
 

C++

// C++ program to round-off a number to given no. of
// significant digits
#include <bits/stdc++.h>
using namespace std;
 
// Function to round - off the number
void Round_off(double N, double n)
{
    int h;
    double l, a, b, c, d, e, i, j, m, f, g;
    b = N;
    c = floor(N);
 
    // Counting the no. of digits to the left of decimal point
    // in the given no.
    for (i = 0; b >= 1; ++i)
        b = b / 10;
 
    d = n - i;
    b = N;
    b = b * pow(10, d);
    e = b + 0.5;
    if ((float)e == (float)ceil(b)) {
        f = (ceil(b));
        h = f - 2;
        if (h % 2 != 0) {
            e = e - 1;
        }
    }
    j = floor(e);
    m = pow(10, d);
    j = j / m;
    cout << "The number after rounding-off is " << j;
}
 
// Driver main function
int main()
{
    double N, n;
 
    // Number to be rounded - off
    N = 139.59;
 
    // No. of Significant digits required in the no.
    n = 4;
 
    Round_off(N, n);
    return 0;
}

Java

// Java program to round-off a number to given no. of
// significant digits
 
import java.io.*;
import static java.lang.Math.*;
public class A {
 
    // Function to round - off the number
    static void Round_off(double N, double n)
    {
        int h;
        double l, a, b, c, d, e, i, j, m, f, g;
        b = N;
        c = floor(N);
 
        // Counting the no. of digits to the left of decimal point
        // in the given no.
        for (i = 0; b >= 1; ++i)
            b = b / 10;
 
        d = n - i;
        b = N;
        b = b * pow(10, d);
        e = b + 0.5;
        if ((float)e == (float)ceil(b)) {
            f = (ceil(b));
            h = (int)(f - 2);
            if (h % 2 != 0) {
                e = e - 1;
            }
        }
        j = floor(e);
        m = pow(10, d);
        j = j / m;
        System.out.println("The number after rounding-off is "
                           + j);
    }
 
    // Driver main function
    public static void main(String args[])
    {
        double N, n;
 
        // Number to be rounded - off
        N = 139.59;
 
        // No. of Significant digits required in the no.
        n = 4;
 
        Round_off(N, n);
    }
}

Python3

# Python 3 program to round-off a number
# to given no. of significant digits
from math import ceil, floor, pow
 
# Function to round - off the number
def Round_off(N, n):
    b = N
    c = floor(N)
 
    # Counting the no. of digits
    # to the left of decimal point
    # in the given no.
    i = 0;
    while(b >= 1):
        b = b / 10
        i = i + 1
 
    d = n - i
    b = N
    b = b * pow(10, d)
    e = b + 0.5
    if (float(e) == float(ceil(b))):
        f = (ceil(b))
        h = f - 2
        if (h % 2 != 0):
            e = e - 1
    j = floor(e)
    m = pow(10, d)
    j = j / m
    print("The number after rounding-off is", j)
 
# Driver Code
if __name__ == '__main__':
     
    # Number to be rounded - off
    N = 139.59
 
    # No. of Significant digits
    # required in the no.
    n = 4
 
    Round_off(N, n)
 
# This code is contributed by
# Surendra_Gangwar

C#

// C# program to round-off a number
// to given no. of significant digits
using System;
 
class A {
 
    // Function to round - off the number
    static void Round_off(double N, double n)
    {
        int h;
        double b, d, e, i, j, m, f;
        b = N;
        // c = Math.Floor(N);
 
        // Counting the no. of digits to the
        // left of decimal point in the given no.
        for (i = 0; b >= 1; ++i)
            b = b / 10;
 
        d = n - i;
        b = N;
        b = b * Math.Pow(10, d);
        e = b + 0.5;
        if ((float)e == (float)Math.Ceiling(b)) {
            f = (Math.Ceiling(b));
            h = (int)(f - 2);
            if (h % 2 != 0) {
                e = e - 1;
            }
        }
        j = Math.Floor(e);
        m = Math.Pow(10, d);
        j = j / m;
        Console.WriteLine("The number after " +
                       "rounding-off is " + j);
    }
 
    // Driver main function
    public static void Main()
    {
        double N, n;
 
        // Number to be rounded - off
        N = 139.59;
 
        // No. of Significant digits required in the no.
        n = 4;
 
        Round_off(N, n);
    }
}
 
// This code is contributed by vt_m.

PHP

<?php
// PHP program to round-off
// a number to given no. of
// significant digits
 
// Function to round -
// off the number
function Round_off($N, $n)
{
     
    $h;
    $l; $a; $b; $c;
    $d; $e; $i; $j;
    $m; $f; $g;
    $b = $N;
    $c = floor($N);
 
    // Counting the no. of digits
    // to the left of decimal point
    // in the given no.
    for ($i = 0; $b >= 1; ++$i)
        $b = $b / 10;
 
    $d = $n - $i;
    $b = $N;
    $b = $b * pow(10, $d);
    $e = $b + 0.5;
    if ($e == ceil($b))
    {
        $f = (ceil($b));
        $h = $f - 2;
        if ($h % 2 != 0)
        {
            $e = $e - 1;
        }
    }
    $j = floor($e);
    $m = pow(10, $d);
    $j = $j / $m;
    echo "The number after rounding-off is " ,$j;
}
 
    // Driver Code
    $N; $n;
 
    // Number to be rounded - off
    $N = 139.59;
 
    // No. of Significant digits
    // required in the no.
    $n = 4;
 
    Round_off($N, $n);
 
// This code is contributed by anuj_67
?>

Javascript

<script>
 
// Javascript program to round-off a number to given no. of
// significant digitsimport
 
// Function to round - off the number
function Round_off(N , n)
{
    var h;
    var l, a, b, c, d, e, i, j, m, f, g;
    b = N;
    c = Math.floor(N);
 
    // Counting the no. of digits to the left of decimal point
    // in the given no.
    for (i = 0; b >= 1; ++i)
        b = parseInt(b / 10);
 
    d = n - i;
    b = N;
    b = b * Math.pow(10, d);
    e = b + 0.5;
    if (e == Math.ceil(b)) {
        f = (Math.ceil(b));
        h = parseInt(f - 2);
        if (h % 2 != 0) {
            e = e - 1;
        }
    }
    j = Math.floor(e);
    m = Math.pow(10, d);
    j = j / m;
    document.write("The number after rounding-off is "
                       + j);
}
 
// Driver main function
var N, n;
 
// Number to be rounded - off
N = 139.59;
 
// No. of Significant digits required in the no.
n = 4;
 
Round_off(N, n);
 
// This code contributed by Princi Singh
 
</script>

Producción: 

The number after rounding-off is 139.6 

Este artículo es una contribución de Mrigendra Singh . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *