{"id":346,"date":"2024-08-20T19:06:07","date_gmt":"2024-08-20T19:06:07","guid":{"rendered":"https:\/\/equipomedios.com\/blog\/?p=346"},"modified":"2024-08-14T19:07:19","modified_gmt":"2024-08-14T19:07:19","slug":"tipos-de-datos-tipo-numeros-python","status":"publish","type":"post","link":"https:\/\/equipomedios.com\/blog\/tipos-de-datos-tipo-numeros-python\/","title":{"rendered":"Tipos de datos | Tipo N\u00fameros | Python"},"content":{"rendered":"<h2 id=\"tipo-numeros\">Tipo n\u00fameros<\/h2>\n<p>Estos tipos de datos se crean mediante literales num\u00e9ricos y se devuelven como resultados por operadores aritm\u00e9ticos y funciones aritm\u00e9ticas integradas. Los objetos num\u00e9ricos son inmutables; Una vez creado su valor nunca cambia.<\/p>\n<p>Por supuesto, los n\u00fameros de Python est\u00e1n fuertemente relacionados con los n\u00fameros matem\u00e1ticos, pero est\u00e1n sujetos a las limitaciones de la representaci\u00f3n num\u00e9rica en las computadoras.<\/p>\n<p>Python distingue entre enteros, n\u00fameros de punto flotante y n\u00fameros complejos:<\/p>\n<table class=\"docutils data align-default\">\n<tbody>\n<tr class=\"row-odd\">\n<td><strong>Clase<\/strong><\/td>\n<td><strong>Tipo<\/strong><\/td>\n<td><strong>Notas<\/strong><\/td>\n<td><strong>Ejemplo<\/strong><\/td>\n<\/tr>\n<tr class=\"row-even\">\n<td><code class=\"docutils literal notranslate\"><span class=\"pre\">int<\/span><\/code><\/td>\n<td>N\u00fameros<\/td>\n<td>N\u00famero entero con precisi\u00f3n fija.<\/td>\n<td><code class=\"docutils literal notranslate\"><span class=\"pre\">42<\/span><\/code><\/td>\n<\/tr>\n<tr class=\"row-odd\">\n<td><code class=\"docutils literal notranslate\"><span class=\"pre\">float<\/span><\/code><\/td>\n<td>N\u00fameros<\/td>\n<td>Coma flotante de doble precisi\u00f3n.<\/td>\n<td><code class=\"docutils literal notranslate\"><span class=\"pre\">3.1415927<\/span><\/code><\/td>\n<\/tr>\n<tr class=\"row-even\">\n<td><code class=\"docutils literal notranslate\"><span class=\"pre\">complex<\/span><\/code><\/td>\n<td>N\u00fameros<\/td>\n<td>Parte real y parte imaginaria\u00a0<em>j<\/em>.<\/td>\n<td><code class=\"docutils literal notranslate\"><span class=\"pre\">(4.5<\/span>\u00a0<span class=\"pre\">+<\/span>\u00a0<span class=\"pre\">3j)<\/span><\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 class=\"wy-table-responsive\">Enteros<\/h3>\n<p>Los n\u00fameros enteros son aquellos que no tienen decimales, tanto positivos como negativos (adem\u00e1s del cero). En Python se pueden representar mediante el tipo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">int<\/span><\/code>\u00a0(de integer, entero).<\/p>\n<p>El tipo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">int<\/span><\/code>\u00a0de Python se implementa a bajo nivel mediante un tipo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">long<\/span><\/code>\u00a0de C. Y dado que Python utiliza C por debajo, como C, y a diferencia de Java, el rango de los valores que puede representar depende de la plataforma. En la mayor parte de las m\u00e1quinas el\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">long<\/span><\/code>\u00a0de C se almacena utilizando 32 bits, es decir, mediante el uso de una variable de tipo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">int<\/span><\/code>\u00a0de Python puede almacenar n\u00fameros de -2<sup>31<\/sup>\u00a0a 2<sup>31<\/sup>\u00a0\u2013 1, o lo que es lo mismo, de -2.147.483.648 a 2.147.483.647. En plataformas de 64 bits, el rango es de -9.223.372.036.854.775.808 hasta 9.223.372.036.854.775.807.<\/p>\n<p>A continuaci\u00f3n, se presentan un ejemplo de su uso:<\/p>\n<p><strong>Definici\u00f3n de un tipo entero<\/strong><\/p>\n<div class=\"highlight-python notranslate\">\n<table class=\"highlighttable\" style=\"height: 121px;\" width=\"569\">\n<tbody>\n<tr>\n<td class=\"linenos\">\n<div class=\"linenodiv\">\n<pre><span class=\"normal\">1<\/span>\r\n<span class=\"normal\">2<\/span><\/pre>\n<\/div>\n<\/td>\n<td class=\"code\">\n<div>\n<pre id=\"__code_1\"><button class=\"md-clipboard md-icon\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; background: transparent; border: 0px; font-family: inherit; font-size: inherit; margin: 0px; padding: 0px; border-radius: 0.1rem; color: var(--md-default-fg-color--light); cursor: pointer; height: 1.5em; outline: none; outline-offset: 0.1rem; position: absolute; right: 0.5em; top: 0.5em; transition: color 0.25s; width: 1.5em; z-index: 1;\" title=\"Copiar al portapapeles\" data-clipboard-target=\"#__code_1 &gt; code\"><\/button><code><span class=\"n\">entero<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">7<\/span>\r\n<span class=\"nb\">print<\/span><span class=\"p\">(<\/span><span class=\"n\">entero<\/span><span class=\"p\">,<\/span> <span class=\"nb\">type<\/span><span class=\"p\">(<\/span><span class=\"n\">entero<\/span><span class=\"p\">))<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 class=\"highlight\">Coma flotante<\/h3>\n<p>Los n\u00fameros reales son los que tienen decimales. En Python se expresan mediante el tipo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">float<\/span><\/code>. En otros lenguajes de programaci\u00f3n, como C, tiene tambi\u00e9n el tipo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">double<\/span><\/code>, similar a\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">float<\/span><\/code>\u00a0pero de mayor precisi\u00f3n (double = doble precisi\u00f3n).<\/p>\n<p>Python, sin embargo, implementa su tipo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">float<\/span><\/code>\u00a0a bajo nivel mediante una variable de tipo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">double<\/span><\/code>\u00a0de C, es decir, utilizando 64 bits, luego en Python siempre se utiliza doble precisi\u00f3n, y en concreto se sigue el est\u00e1ndar IEEE 754: 1 bit para el signo, 11 para el exponente, y 52 para la mantisa. Esto significa que los valores que puede representar van desde \u00b12,2250738585072020 x 10<sup>-308<\/sup>\u00a0hasta \u00b11,7976931348623157\u00d710<sup>308<\/sup>.<\/p>\n<p>La mayor parte de los lenguajes de programaci\u00f3n siguen el mismo esquema para la representaci\u00f3n interna. Pero como muchos sabr\u00e9is esta tiene sus limitaciones, impuestas por el hardware.<\/p>\n<p>Por eso desde Python 2.4 cuenta tambi\u00e9n con un nuevo tipo\u00a0<a class=\"reference external\" href=\"https:\/\/peps.python.org\/pep-0327\/\">Decimal<\/a>, para el caso de que se necesite representar fracciones de forma m\u00e1s precisa. Sin embargo este tipo est\u00e1 fuera del alcance de este tutorial, y s\u00f3lo es necesario para el \u00e1mbito de la programaci\u00f3n cient\u00edfica y otros relacionados.<\/p>\n<p>Para aplicaciones normales puedes utilizar el tipo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">float<\/span><\/code>\u00a0sin miedo, como ha venido haci\u00e9ndose desde hace a\u00f1os, aunque teniendo en cuenta que los n\u00fameros en coma flotante no son precisos (ni en este ni en otros lenguajes de programaci\u00f3n).<\/p>\n<p>Para representar un n\u00famero real en Python se escribe primero la parte entera, seguido de un punto y por \u00faltimo la parte decimal.<\/p>\n<div class=\"highlight-pycon notranslate\">\n<div class=\"highlight\">\n<pre id=\"__code_2\"><button class=\"md-clipboard md-icon\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; background: transparent; border: 0px; font-family: inherit; font-size: inherit; margin: 0px; padding: 0px; border-radius: 0.1rem; color: var(--md-default-fg-color--lightest); cursor: pointer; height: 1.5em; outline: none; outline-offset: 0.1rem; position: absolute; right: 0.5em; top: 0.5em; transition: color 0.25s; width: 1.5em; z-index: 1;\" title=\"Copiar al portapapeles\" data-clipboard-target=\"#__code_2 &gt; code\"><\/button><code><span class=\"go\">real = 0.2703<\/span>\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<p>Tambi\u00e9n se puede utilizar notaci\u00f3n cient\u00edfica, y a\u00f1adir una e (de exponente) para indicar un exponente en base 10. Por ejemplo:<\/p>\n<div class=\"highlight-pycon notranslate\">\n<div class=\"highlight\">\n<pre id=\"__code_3\"><button class=\"md-clipboard md-icon\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; background: transparent; border: 0px; font-family: inherit; font-size: inherit; margin: 0px; padding: 0px; border-radius: 0.1rem; color: var(--md-default-fg-color--light); cursor: pointer; height: 1.5em; outline: none; outline-offset: 0.1rem; position: absolute; right: 0.5em; top: 0.5em; transition: color 0.25s; width: 1.5em; z-index: 1;\" title=\"Copiar al portapapeles\" data-clipboard-target=\"#__code_3 &gt; code\"><\/button><code><span class=\"go\">real = 0.1e-3<\/span>\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<p>ser\u00eda equivalente a 0.1 x 10<sup>-3<\/sup>\u00a0= 0.1 x 0.001 = 0.0001<\/p>\n<p>A continuaci\u00f3n, se presentan un ejemplo de su uso:<\/p>\n<p><strong>Definir coma flotante<\/strong><\/p>\n<div class=\"highlight-python notranslate\">\n<div class=\"highlight\">\n<table class=\"highlighttable\">\n<tbody>\n<tr>\n<td class=\"linenos\">\n<div class=\"linenodiv\">\n<pre><span class=\"normal\">1<\/span>\r\n<span class=\"normal\">2<\/span>\r\n<span class=\"normal\">3<\/span>\r\n<span class=\"normal\">4<\/span><\/pre>\n<\/div>\n<\/td>\n<td class=\"code\">\n<div>\n<pre id=\"__code_4\"><button class=\"md-clipboard md-icon\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; background: transparent; border: 0px; font-family: inherit; font-size: inherit; margin: 0px; padding: 0px; border-radius: 0.1rem; color: var(--md-default-fg-color--lightest); cursor: pointer; height: 1.5em; outline: none; outline-offset: 0.1rem; position: absolute; right: 0.5em; top: 0.5em; transition: color 0.25s; width: 1.5em; z-index: 1;\" title=\"Copiar al portapapeles\" data-clipboard-target=\"#__code_4 &gt; code\"><\/button><code><span class=\"n\">float_1<\/span><span class=\"p\">,<\/span> <span class=\"n\">float_2<\/span><span class=\"p\">,<\/span> <span class=\"n\">float_3<\/span> <span class=\"o\">=<\/span> <span class=\"mf\">0.348<\/span><span class=\"p\">,<\/span> <span class=\"mf\">10.5<\/span><span class=\"p\">,<\/span> <span class=\"mf\">1.5e2<\/span>\r\n<span class=\"nb\">print<\/span><span class=\"p\">(<\/span><span class=\"n\">float_1<\/span><span class=\"p\">,<\/span> <span class=\"nb\">type<\/span><span class=\"p\">(<\/span><span class=\"n\">float_1<\/span><span class=\"p\">))<\/span>\r\n<span class=\"nb\">print<\/span><span class=\"p\">(<\/span><span class=\"n\">float_2<\/span><span class=\"p\">,<\/span> <span class=\"nb\">type<\/span><span class=\"p\">(<\/span><span class=\"n\">float_2<\/span><span class=\"p\">))<\/span>\r\n<span class=\"nb\">print<\/span><span class=\"p\">(<\/span><span class=\"n\">float_3<\/span><span class=\"p\">,<\/span> <span class=\"nb\">type<\/span><span class=\"p\">(<\/span><span class=\"n\">float_3<\/span><span class=\"p\">))<\/span>\r\n<\/code><\/pre>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><strong>Definir tipo entero coma flotante con exponente en base 10<\/strong><\/p>\n<div class=\"highlight-python notranslate\">\n<table class=\"highlighttable\">\n<tbody>\n<tr>\n<td class=\"linenos\">\n<div class=\"linenodiv\">\n<pre><span class=\"normal\">1<\/span>\r\n<span class=\"normal\">2<\/span><\/pre>\n<\/div>\n<\/td>\n<td class=\"code\">\n<div>\n<pre id=\"__code_5\"><button class=\"md-clipboard md-icon\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; background: transparent; border: 0px; font-family: inherit; font-size: inherit; margin: 0px; padding: 0px; border-radius: 0.1rem; color: var(--md-default-fg-color--light); cursor: pointer; height: 1.5em; outline: none; outline-offset: 0.1rem; position: absolute; right: 0.5em; top: 0.5em; transition: color 0.25s; width: 1.5em; z-index: 1;\" title=\"Copiar al portapapeles\" data-clipboard-target=\"#__code_5 &gt; code\"><\/button><code><span class=\"n\">real<\/span> <span class=\"o\">=<\/span> <span class=\"mf\">0.56e-3<\/span>\r\n<span class=\"nb\">print<\/span><span class=\"p\">(<\/span><span class=\"n\">real<\/span><span class=\"p\">,<\/span> <span class=\"nb\">type<\/span><span class=\"p\">(<\/span><span class=\"n\">real<\/span><span class=\"p\">))<\/span><\/code><\/pre>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 id=\"complejos\">Complejos<\/h3>\n<p>Los n\u00fameros complejos son aquellos que tienen parte imaginaria. Si no conoc\u00edas de su existencia, es m\u00e1s que probable que nunca lo vayas a necesitar, por lo que puede saltarte este apartado tranquilamente.<\/p>\n<p>De hecho la mayor parte de lenguajes de programaci\u00f3n carecen de este tipo, aunque sea muy utilizado por ingenieros y cient\u00edficos en general.<\/p>\n<p>En el caso de que necesite utilizar n\u00fameros complejos, o simplemente tiene curiosidad, este tipo, llamado\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">complex<\/span><\/code>\u00a0en Python, tambi\u00e9n se almacena usando coma flotante, debido a que estos n\u00fameros son una extensi\u00f3n de los n\u00fameros reales.<\/p>\n<p>En concreto se almacena en una estructura de C, compuesta por dos variables de tipo\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">double<\/span><\/code>, sirviendo una de ellas para almacenar la parte real y la otra para la parte imaginaria.<\/p>\n<p>Los n\u00fameros complejos en Python se representan de la siguiente forma:<\/p>\n<div class=\"highlight-pycon notranslate\">\n<div class=\"highlight\">\n<pre id=\"__code_6\"><code><span class=\"go\">complejo = 2.1 + 7.8j<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<h2 class=\"highlight\">Convertir a num\u00e9ricos<\/h2>\n<h2 class=\"highlight\">Para convertir a\u00a0<span class=\"std std-ref\">tipos num\u00e9ricos<\/span>\u00a0debe usar las siguientes\u00a0<span class=\"std std-ref\">funciones integradas<\/span>\u00a0en el interprete Python:<\/h2>\n<ul class=\"simple\">\n<li>La funci\u00f3n\u00a0<span class=\"std std-ref\">int()<\/span>\u00a0devuelve un tipo de datos\u00a0<span class=\"std std-ref\">n\u00famero entero<\/span>.<\/li>\n<li>La funci\u00f3n\u00a0<span class=\"std std-ref\">float()<\/span>\u00a0devuelve un tipo de datos\u00a0<span class=\"std std-ref\">n\u00famero entero float<\/span>.<\/li>\n<li>La funci\u00f3n\u00a0<span class=\"std std-ref\">complex()<\/span>\u00a0devuelve un tipo de datos\u00a0<span class=\"std std-ref\">n\u00famero complejo<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Tipo n\u00fameros Estos tipos de datos se crean mediante literales num\u00e9ricos y se devuelven como resultados por operadores aritm\u00e9ticos y funciones aritm\u00e9ticas integradas. Los objetos num\u00e9ricos son inmutables; Una vez creado su valor nunca cambia. Por supuesto, los n\u00fameros de Python est\u00e1n fuertemente relacionados con los n\u00fameros matem\u00e1ticos, pero est\u00e1n sujetos a las limitaciones de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":331,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[39,40],"tags":[],"class_list":["post-346","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programacion","category-python"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/equipomedios.com\/blog\/wp-content\/uploads\/2024\/08\/python-logo-master-v3-TM.png?fit=601%2C203&ssl=1","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/posts\/346","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/comments?post=346"}],"version-history":[{"count":1,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/posts\/346\/revisions"}],"predecessor-version":[{"id":347,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/posts\/346\/revisions\/347"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/media\/331"}],"wp:attachment":[{"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/media?parent=346"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/categories?post=346"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/tags?post=346"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}