AYUDA .NET

C# Round double to int (Cómo funciona para desarrolladores)

Publicado en 29 de abril, 2024
Compartir:

Redondear un doble a un entero en C# es una tarea fundamental que se plantea a menudo en programación, especialmente frecuente cuando los cálculos producen valores dobles pero requieren valores enteros para operaciones posteriores. El proceso consiste en convertir un valor doble, que puede incluir decimales, al número entero más próximo. Esto puede hacerse utilizando varios métodos, cada uno de los cuales se adhiere a una convención de redondeo especificada.

A lo largo de esta guía, exploraremos diferentes estrategias y funciones utilizadas en C# para redondear valores dobles a dígitos int, ayudando a los desarrolladores a comprender las implicaciones y aplicaciones de cada método. También exploraremos las características deBiblioteca PDF .NET IronPDFla herramienta PDF de C# es una potente herramienta para crear documentos PDF en C#.

Comprender el método circular

En C#, el método Math.Round es la herramienta principal para redondear valores dobles al entero más cercano. Esta función redondea un valor doble al valor integral más próximo, proporcionando un alto grado de control sobre el proceso de redondeo mediante sobrecargas que permiten especificar un número determinado de dígitos fraccionarios y la estrategia de redondeo. Por ejemplo, cuando un valor doble está exactamente a medio camino entre dos enteros, la convención de redondeo determina si el valor se redondea hacia arriba o hacia abajo.

He aquí un ejemplo básico del método Math.Round:

public static void Main()
{
    double myDouble = 9.5;
    int myInt = (int)Math.Round(myDouble);
    Console.WriteLine("The rounded integer value is: " + myInt);
}
public static void Main()
{
    double myDouble = 9.5;
    int myInt = (int)Math.Round(myDouble);
    Console.WriteLine("The rounded integer value is: " + myInt);
}
Imports System

Public Shared Sub Main()
	Dim myDouble As Double = 9.5
	Dim myInt As Integer = CInt(Math.Truncate(Math.Round(myDouble)))
	Console.WriteLine("The rounded integer value is: " & myInt)
End Sub
VB   C#

En este código fuente, Math.Round se utiliza para redondear el valor doble 9.5 al entero más cercano. El método devuelve 10, ya que redondea al número más próximo. Este es el resultado esperado cuando se redondean valores positivos que están exactamente a mitad de camino entre dos valores enteros.

Redondeo y conversión explícita

Otro enfoque común en C# para convertir valores dobles a enteros es mediante la conversión explícita. La conversión explícita consiste en convertir directamente el double en un int, truncando los decimales. Esto significa que no redondea al entero más próximo, sino al entero más pequeño más próximo. Este método es útil cuando sólo necesita eliminar los dígitos fraccionarios sin tener en cuenta el valor integral más próximo.

A continuación se explica cómo realizar una conversión explícita:

public static void Main()
{
    double myDouble = 9.9;
    int myInt = (int)myDouble;
    Console.WriteLine("The integer value after explicit conversion is: " + myInt);
}
public static void Main()
{
    double myDouble = 9.9;
    int myInt = (int)myDouble;
    Console.WriteLine("The integer value after explicit conversion is: " + myInt);
}
Imports System

Public Shared Sub Main()
	Dim myDouble As Double = 9.9
	Dim myInt As Integer = CInt(Math.Truncate(myDouble))
	Console.WriteLine("The integer value after explicit conversion is: " & myInt)
End Sub
VB   C#

En el ejemplo anterior, la salida será 9 porque la conversión explícita simplemente elimina los dígitos fraccionarios de 9.9, dando lugar a un número entero más pequeño. Este método es rápido pero puede no ser apropiado cuando se requiere un redondeo preciso de acuerdo con las convenciones de redondeo especificadas.

Utilización de otros métodos para necesidades específicas de redondeo

Aparte de Math.Round y la conversión explícita, C# ofrece otros métodos para redondear valores dobles, que responden a diferentes necesidades. Por ejemplo, Math.Floor y Math.Ceiling proporcionan opciones para redondear valores dobles siempre hacia el entero menor o el entero mayor, respectivamente. Math.Floor es particularmente útil para redondear siempre hacia abajo, incluso con valores negativos, mientras que Math.Ceiling asegura el redondeo hacia arriba.

Veamos ejemplos de estos métodos:

public static void Main()
{
    double myDouble = 9.2;
    int floorInt = (int)Math.Floor(myDouble);
    int ceilingInt = (int)Math.Ceiling(myDouble);
    Console.WriteLine("Rounded down: " + floorInt);
    Console.WriteLine("Rounded up: " + ceilingInt);
}
public static void Main()
{
    double myDouble = 9.2;
    int floorInt = (int)Math.Floor(myDouble);
    int ceilingInt = (int)Math.Ceiling(myDouble);
    Console.WriteLine("Rounded down: " + floorInt);
    Console.WriteLine("Rounded up: " + ceilingInt);
}
Imports System

Public Shared Sub Main()
	Dim myDouble As Double = 9.2
	Dim floorInt As Integer = CInt(Math.Truncate(Math.Floor(myDouble)))
	Dim ceilingInt As Integer = CInt(Math.Truncate(Math.Ceiling(myDouble)))
	Console.WriteLine("Rounded down: " & floorInt)
	Console.WriteLine("Rounded up: " & ceilingInt)
End Sub
VB   C#

En el código anterior, Math.Floor devuelve 9 a partir de 9.2, redondeando al número más cercano con menos dígitos fraccionarios, mientras que Math.Ceiling devuelve 10, moviéndose hacia el siguiente entero positivo. Estos métodos son esenciales cuando la estrategia de redondeo debe favorecer valores enteros superiores o inferiores sin ambigüedad.

Introducción a IronPDF

Explorar las características de IronPDF para descubrir cómo esta biblioteca .NET permite a los desarrolladores de C# crear y gestionar archivos PDF directamente desde HTML. Utiliza un motor de renderizado de Chrome para garantizar que los PDF tengan el mismo aspecto que en un navegador web. Esto lo hace perfecto para crear informes basados en la web. IronPDF puede gestionar tareas complejas como añadir firmas digitales, cambiar el diseño de los documentos e insertar encabezados, pies de página o marcas de agua personalizados. Es fácil de usar porque permite a los desarrolladores trabajar con tecnologías web conocidas, como HTML, CSS, JavaScript e imágenes, para crear o editar documentos PDF.

Con IronPDF, la característica principal es convertirHTML a PDF con IronPDF, mientras se mantienen los diseños y estilos. Puede generar archivos PDF a partir de una variedad de contenido web, como informes, facturas y documentación, convirtiendo archivos HTML, URL o cadenas de HTML en archivos PDF.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
VB   C#

Para integrar IronPDF con las funcionalidades de redondeo de C#, los desarrolladores pueden combinar las capacidades de generación de PDF de IronPDF con operaciones matemáticas en C#. Esto resulta especialmente útil en aplicaciones financieras o de elaboración de informes en las que los datos numéricos deben presentarse de forma clara y precisa. Por ejemplo, puede generar facturas o resúmenes financieros en los que las cifras se redondeen al número entero más próximo para garantizar la legibilidad y el cumplimiento de las normas contables.

Ejemplo de código

He aquí un ejemplo de cómo puede utilizar IronPDF junto con el método Math.Round de C# para crear un PDF que incluya datos numéricos redondeados:

using IronPdf;
using System;
public class PDFGenerationWithRounding
{
    public static void Main()
    {
        License.LicenseKey = "License-Key";
        // Initialize the HTML to PDF renderer
        var renderer = new ChromePdfRenderer();
        // Example data
        double transactionAmount = 123.456;
        int roundedAmount = (int)Math.Round(transactionAmount);
        // HTML content including the rounded amount
        string htmlContent = $@"
            <html>
            <head>
                <title>Transaction Summary</title>
            </head>
            <body>
                <h1>Transaction Details</h1>
                <p>Original Amount: ${transactionAmount}</p>
                <p>Rounded Amount: ${roundedAmount}</p>
            </body>
            </html>";
        // Convert the HTML to a PDF document
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("TransactionSummary.pdf");
        Console.WriteLine("The PDF document has been generated with rounded figures.");
    }
}
using IronPdf;
using System;
public class PDFGenerationWithRounding
{
    public static void Main()
    {
        License.LicenseKey = "License-Key";
        // Initialize the HTML to PDF renderer
        var renderer = new ChromePdfRenderer();
        // Example data
        double transactionAmount = 123.456;
        int roundedAmount = (int)Math.Round(transactionAmount);
        // HTML content including the rounded amount
        string htmlContent = $@"
            <html>
            <head>
                <title>Transaction Summary</title>
            </head>
            <body>
                <h1>Transaction Details</h1>
                <p>Original Amount: ${transactionAmount}</p>
                <p>Rounded Amount: ${roundedAmount}</p>
            </body>
            </html>";
        // Convert the HTML to a PDF document
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("TransactionSummary.pdf");
        Console.WriteLine("The PDF document has been generated with rounded figures.");
    }
}
Imports IronPdf
Imports System
Public Class PDFGenerationWithRounding
	Public Shared Sub Main()
		License.LicenseKey = "License-Key"
		' Initialize the HTML to PDF renderer
		Dim renderer = New ChromePdfRenderer()
		' Example data
		Dim transactionAmount As Double = 123.456
		Dim roundedAmount As Integer = CInt(Math.Truncate(Math.Round(transactionAmount)))
		' HTML content including the rounded amount
		Dim htmlContent As String = $"
            <html>
            <head>
                <title>Transaction Summary</title>
            </head>
            <body>
                <h1>Transaction Details</h1>
                <p>Original Amount: ${transactionAmount}</p>
                <p>Rounded Amount: ${roundedAmount}</p>
            </body>
            </html>"
		' Convert the HTML to a PDF document
		Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
		pdf.SaveAs("TransactionSummary.pdf")
		Console.WriteLine("The PDF document has been generated with rounded figures.")
	End Sub
End Class
VB   C#

C# Round double to int(Cómo funciona para desarrolladores): Figura 1 - Ejemplo de factura PDF que muestra el número redondeado utilizando Math.round junto con IronPDF

En este ejemplo, IronPDF convierte una simple cadena HTML en un archivo PDF, incorporando datos dinámicos que incluyen el importe de una transacción redondeado al número entero más próximo. Este enfoque es muy adaptable, lo que permite a los desarrolladores crear documentos más complejos adaptados a sus necesidades específicas, con la precisión y la facilidad de uso a la cabeza del proceso.

Conclusión

C# Round double to int(Cómo funciona para desarrolladores): Figura 2 - Página de licencias de IronPDF

El redondeo de double a int en C# es un proceso versátil, influenciado por la naturaleza del valor double, el contexto del redondeo y la precisión requerida en la aplicación. Ya sea utilizando Math.Round para el redondeo de la integral más cercana, la conversión explícita para el truncamiento directo, u otros métodos como Math.Floor y Math.Ceiling para direcciones de redondeo específicas, C# proporciona métodos para manejar el redondeo de valores dobles de forma efectiva. IronPDF tiene unprueba gratuita de IronPDF y los precios empiezan a partir de 749 dólares.

< ANTERIOR
C# Logging (Cómo funciona para los desarrolladores)
SIGUIENTE >
En C# (Cómo funciona para desarrolladores)

¿Listo para empezar? Versión: 2024.12 acaba de salir

Descarga gratuita de NuGet Descargas totales: 11,622,374 Ver licencias >