Uso de números enteros y de punto flotante en C#
Este tutorial le enseña sobre los tipos numéricos en C#. Puede escribir pequeñas cantidades de código y, a continuación, compilar y ejecutar ese código. El tutorial contiene una serie de lecciones que exploran números y operaciones matemáticas en C#. Estas lecciones le enseñan los aspectos básicos del lenguaje C#.
Sugerencia
Cuando un bloque de fragmento de código incluye el botón "Ejecutar", ese botón abre la ventana interactiva o reemplaza el código existente en la ventana interactiva. Cuando el fragmento de código no incluye un botón "Ejecutar", puede copiar el código y agregarlo a la ventana interactiva actual.
Exploración de matemáticas de enteros
Ejecute el código siguiente en la ventana interactiva.
int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);
En el código anterior se muestran las operaciones matemáticas fundamentales con enteros. El tipo int
representa un entero, un número entero positivo o negativo. Use el símbolo +
para la suma. Otras operaciones matemáticas comunes para enteros incluyen:
-
-
para resta -
*
para multiplicación -
/
para división
Empiece por explorar esas distintas operaciones. Modifique la tercera línea para probar cada una de estas operaciones. Por ejemplo, para intentar restar, reemplace el +
por un -
como se muestra en la línea siguiente:
int c = a - b;
Pruébelo. Seleccione el botón "Ejecutar". A continuación, intente la multiplicación, *
e intente la división, /
. También puede experimentar escribiendo varias operaciones matemáticas en la misma línea, si lo desea.
Sugerencia
Al explorar C# (o cualquier lenguaje de programación), se cometen errores al escribir código. El compilador de encuentra esos errores y los notifica a usted. Cuando la salida contiene mensajes de error, examine detenidamente el código de ejemplo y el código de la ventana interactiva para ver qué corregir. Este ejercicio le ayuda a aprender la estructura del código de C#.
Exploración del orden de las operaciones
El lenguaje C# define la prioridad de diferentes operaciones matemáticas con reglas coherentes con las reglas que ha aprendido en matemáticas. La multiplicación y la división tienen prioridad sobre la suma y la resta. Explore esto ejecutando el código siguiente en la ventana interactiva:
int a = 5;
int b = 4;
int c = 2;
int d = a + b * c;
Console.WriteLine(d);
La salida muestra que la multiplicación se realiza antes de la adición.
Puede forzar un orden de operación diferente agregando paréntesis alrededor de la operación o las operaciones que desea realizar primero. Agregue las líneas siguientes a la ventana interactiva:
d = (a + b) * c;
Console.WriteLine(d);
Explore más mediante la combinación de muchas operaciones diferentes. Reemplace la cuarta línea del código anterior por algo parecido a esto:
d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
Console.WriteLine(d);
Podría notar un comportamiento interesante de los números enteros. La división de enteros siempre genera un resultado entero, incluso cuando se espera que el resultado incluya una parte decimal o fraccionararia.
Pruebe el código siguiente:
int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
Console.WriteLine(d);
Exploración de la precisión y los límites de enteros
En ese último ejemplo se mostró que la división de enteros trunca el resultado. Puede obtener el resto con el operador de resto, el carácter %
:
int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
int e = (a + b) % c;
Console.WriteLine($"quotient: {d}");
Console.WriteLine($"remainder: {e}");
El tipo entero de C# difiere de los enteros matemáticos de otra manera: el tipo de int
tiene límites mínimos y máximos. Pruebe el código siguiente para ver esos límites:
int max = int.MaxValue;
int min = int.MinValue;
Console.WriteLine($"The range of integers is {min} to {max}");
Si un cálculo genera un valor que supera los límites, se producirá una condición de subdesbordamiento o desbordamiento. Parece que la respuesta abarca de un límite a otro. Para ver un ejemplo, agregue estas dos líneas en la ventana interactiva:
int what = max + 3;
Console.WriteLine($"An example of overflow: {what}");
Observe que la respuesta está muy cerca del entero mínimo (negativo). Es lo mismo que min + 2
. La operación de adición desbordó los valores permitidos para los enteros. La respuesta es un número negativo grande porque un desbordamiento "se ajusta" desde el valor de entero más alto posible al más bajo.
Hay otros tipos numéricos con límites y precisión diferentes que usaría cuando el tipo de int
no satisface sus necesidades. Vamos a explorar esos tipos de números a continuación.
Operaciones con el tipo double
El tipo numérico double
representa un número de punto flotante de precisión doble. Esos términos podrían ser nuevos para usted. Un número de punto flotante es útil para representar números no enteros que pueden ser grandes o pequeños en magnitud. La precisión doble es un término relativo que describe el número de dígitos binarios que se usan para almacenar el valor. Los números de precisión doble tienen el doble de dígitos binarios que los de precisión sencilla. En los equipos modernos, es más común usar números de doble precisión que números de precisión simple. números de de precisión única se declaran mediante la palabra clave float
. Vamos a explorar. Ejecute el código siguiente y vea el resultado:
double a = 5;
double b = 4;
double c = 2;
double d = (a + b) / c;
Console.WriteLine(d);
Observe que la respuesta incluye la parte decimal del cociente. Pruebe una expresión algo más complicada con tipos double. Puede usar los siguientes valores o sustituir otros números:
double a = 19;
double b = 23;
double c = 8;
double d = (a + b) / c;
Console.WriteLine(d);
El intervalo de un valor doble es mayor que los valores enteros. Pruebe el código siguiente en la ventana interactiva:
double max = double.MaxValue;
double min = double.MinValue;
Console.WriteLine($"The range of double is {min} to {max}");
Estos valores se imprimen en notación científica. El número anterior al E
es la mantisa. El número después del E
es el exponente, como potencia de 10.
Al igual que los números decimales en matemáticas, los dobles en C# pueden tener errores de redondeo. Pruebe este código:
double third = 1.0 / 3.0;
Console.WriteLine(third);
Sabes que 0.3
es 3/10
y no es exactamente lo mismo que 1/3
. Del mismo modo, 0.33
es 33/100
. Ese valor está más cerca de 1/3
, pero aún no es exacto. Independientemente del número de posiciones decimales que agregue, permanece un error de redondeo.
desafío
Pruebe otros cálculos con números grandes, números pequeños, multiplicación y división mediante el tipo de double
. Pruebe cálculos más complicados.
Trabajar con tipos decimales
Pero hay otro tipo más que debe conocer: decimal
. El tipo de decimal
tiene un intervalo más pequeño, pero mayor precisión que double
. Echemos un vistazo:
decimal min = decimal.MinValue;
decimal max = decimal.MaxValue;
Console.WriteLine($"The range of the decimal type is {min} to {max}");
Tenga en cuenta que el rango es menor que el tipo double
. Puede ver la mayor precisión con el tipo decimal probando el código siguiente:
double a = 1.0;
double b = 3.0;
Console.WriteLine(a / b);
decimal c = 1.0M;
decimal d = 3.0M;
Console.WriteLine(c / d);
Observe que los cálculos que usan el tipo decimal tienen más dígitos a la derecha del punto decimal.
El sufijo M
en los números es cómo se indica que una constante debe usar el tipo decimal
. De lo contrario, el compilador asume el tipo double
.
Nota
La letra M
se eligió como la letra más distinta visualmente entre las palabras clave double
y decimal
.
desafío
Escribir código que calcula el área de un círculo cuyo radio es de 2,50 centímetros. Recuerde que el área de un círculo es el radio cuadrado multiplicado por PI. Una sugerencia: .NET contiene una constante para PI, Math.PI que puede usar para ese valor. Math.PI, como todas las constantes declaradas en el espacio de nombres System.Math
, es un valor double
. Por ese motivo, debe usar double
en lugar de valores decimal
para este desafío.
Deberías obtener una respuesta entre 19 y 20.
Una vez que lo pruebe, abra el panel de detalles para ver cómo lo hizo:
Pruebe otras fórmulas si lo desea.
Ha completado el tutorial interactivo "Números en C#". Puede seleccionar el vínculo Ramas y bucles para iniciar el siguiente tutorial interactivo, o bien puede visitar el sitio de .NET para descargar el SDK de .NET, crear un proyecto en la máquina y mantener la codificación. La sección "Pasos siguientes" lo conduce de nuevo a estos tutoriales.
Puede obtener más información sobre los números en C# en los siguientes artículos: