20240920 ProgrEstruct-Variables_7 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Vale, hay veces que nuestros datos no se adaptan a un número entero, obviamente, ¿no?
00:00:00
El precio de algo, 3,7.
00:00:07
Pues con un número entero no puedo guardar el precio de algo.
00:00:11
Y así como tantas cosas.
00:00:13
Las medidas de una casa.
00:00:15
Una casa no mide 3 por 4, sino mide 3,7 por 4,8.
00:00:17
Entonces necesitamos variables decimales en todos los lenguajes de programación, también en el nuestro.
00:00:21
Vale, todos sabéis lo que es un número decimal.
00:00:26
Obviamente tiene parte entera, parte decimal.
00:00:27
Y para guardar ese tipo de números nosotros tenemos dos tipos primitivos que los incluimos en la lista ya, el primer día que son float y double, ¿vale? Única diferencia entre ellos, la precisión, la cantidad de precisión que dan para las cifras decimales, ¿vale?
00:00:30
dabel da doble precisión
00:00:48
float simple precisión
00:00:51
que se llama, esos detalles numéricos matemáticos
00:00:52
tampoco nos importan mucho
00:00:54
solo nos importan que si declaramos
00:00:55
un número decimal dabel
00:00:58
pues ya está, lo declaramos con el
00:01:00
con su nombre de tipo primitivo
00:01:02
y ya está
00:01:07
y ahora yo cuando le asigno un valor
00:01:08
le asigno un valor
00:01:10
que si quiero puede tener decimales
00:01:15
si quiero
00:01:17
yo puedo hacer esto
00:01:19
Y como veis lo ha cogido perfectamente
00:01:20
Y no hay ningún problema
00:01:23
Y si ahora lo muestro
00:01:24
En un decimal, vamos a poner aquí
00:01:30
Un
00:01:32
System.app para que la consola
00:01:34
Sabe donde llegamos a
00:01:36
Pruebas
00:01:37
Con decimales
00:01:40
Vale
00:01:42
A ver, para ejecutar este código
00:01:43
Voy a quitar este errorcito
00:01:46
Cuando pusimos el ejemplo de byte
00:01:47
Vale, pues si ejecutamos
00:01:49
este código, esto de aquí
00:01:53
vale, él me lo ha mostrado
00:01:57
¿y qué ha ocurrido?
00:02:07
silencio
00:02:10
yo le he puesto 8, pero como
00:02:11
él lo tiene que guardar en un decimal
00:02:13
aquí es como si hiciera una promoción automática
00:02:14
rápidamente, le pone el punto 0
00:02:17
le pone el punto 0 porque lo guarda en decimal
00:02:19
y este número es decimal a todos los
00:02:21
efectos, ¿vale?
00:02:23
entonces
00:02:26
si yo quiero ponerle ya los decimales
00:02:27
pues se los pongo
00:02:30
pero separados con el punto
00:02:31
no con la coma, ¿vale?
00:02:34
por ejemplo 7.9
00:02:36
pues ya está, la variable
00:02:38
double me coge el 7.9
00:02:40
entonces el separador
00:02:43
de la parte anterior a la decimal
00:02:44
es el punto, no es la coma
00:02:45
¿vale?
00:02:48
vale, pues ya está y uno ya
00:02:50
puede sumar números decimales
00:02:52
entre sí, lo que sea
00:02:54
que quiere incrementar en 1
00:02:55
el contenido de este numerito decimal
00:02:57
bueno pues
00:03:01
por ejemplo con esto lo he incrementado
00:03:05
en 1, aquí estoy
00:03:07
haciendo una suma
00:03:09
estoy sumando
00:03:11
el número decimal este que es 7.9
00:03:12
le estoy sumando 1
00:03:16
aquí la máquina virtual ve
00:03:17
que está sumando un double
00:03:19
un entero para guardar en un double
00:03:21
pues este 1
00:03:23
le hace también la promoción automática
00:03:24
y le pone el punto cero
00:03:27
él automáticamente por dentro, le pone el punto cero
00:03:29
¿vale?
00:03:31
es decir, este operador está mezclando en realidad
00:03:33
un entero con un double
00:03:35
pero este entero le pone el punto cero detrás
00:03:36
porque no afecta
00:03:39
¿vale? entonces con números decimales
00:03:40
podemos hacer
00:03:43
sumas, restas, multiplicaciones y divisiones
00:03:45
igual que con los enteros
00:03:47
aquí lo único que la división
00:03:49
ahora ya no tendrá
00:03:52
significado de cociente, sino
00:03:53
la división con decimales, ¿vale?
00:03:55
Por ejemplo, si nos hacemos aquí un
00:03:57
num decimal
00:03:59
2 igual a
00:04:00
igual a 5.9
00:04:08
por ejemplo, ¿vale?
00:04:17
Y no lo he declarado, con lo cual
00:04:18
muy mal.
00:04:20
Vale, pues entonces
00:04:22
yo ahora puedo pues hacer esto
00:04:23
tranquilamente
00:04:26
y si hacéis el system out para
00:04:27
ver el resultado, pues habrá sumado
00:04:39
8 con 9
00:04:41
porque 7 con 9 al sumarle 1
00:04:43
se habrá quedado en 8 con 9
00:04:45
habrá sumado 8 con 9
00:04:47
a 5 con 9 y el resultado que dé
00:04:49
pues habrá dado
00:04:51
14 con algo, supongo, 14 con 8
00:04:53
lo que sea, para no hacer
00:04:55
el system todo el rato
00:04:57
vale, entonces
00:04:58
el operador suma y resta
00:05:00
y multiplicación
00:05:03
con números decimales, pues sabemos cómo funciona
00:05:05
porque estamos multiplicando
00:05:07
sumando y restando
00:05:09
números decimales en la calculadora todo el rato
00:05:11
la división
00:05:13
la división en este caso
00:05:16
no es el cociente entero
00:05:18
como era en el caso de números enteros
00:05:19
recordad que aquí, cuando hacíamos esta división
00:05:21
esta división era
00:05:24
entre números enteros
00:05:25
el 7
00:05:26
entre el n, el que fuera
00:05:28
o aquí, se ve más claro
00:05:31
aquí el operador división, este de aquí
00:05:33
dividía el número entero 7
00:05:35
entre el número entero 3
00:05:37
entonces aquí el operador significa
00:05:38
cociente
00:05:41
luego cuando lo mostrábamos ponía 2
00:05:42
porque el cociente de 73 es 2
00:05:45
el resto se ignora
00:05:48
y todo eso
00:05:50
¿qué queremos el resto?
00:05:50
pues tenemos este operador
00:05:52
¿qué ocurre cuando
00:05:53
utilizamos el operador
00:05:58
de división entre números decimales?
00:05:59
que ahí no es cociente
00:06:01
ahí es la división decimal
00:06:03
y ya está
00:06:04
por ejemplo si ahora vamos a guardar
00:06:05
en numDecimal vamos a guardar la división
00:06:08
de sí mismo, de lo que él tiene
00:06:11
dividido entre numDecimal2
00:06:13
¿vale?
00:06:16
entonces cogerá lo que tenga numDecimal
00:06:19
que va a ser 8,9
00:06:21
porque es este más lo que le hemos sumado, 8,9
00:06:22
lo dividirá entre lo que contenga esto
00:06:24
que es 5,9
00:06:28
hará la división con decimales, lo que le dé
00:06:28
y lo guardará en double
00:06:31
luego
00:06:32
este es un operador que hace una cosa
00:06:34
o hace otra en función
00:06:37
de los operandos que tenga
00:06:39
a los lados. Y eso le pasa
00:06:41
a otros operadores.
00:06:43
¿A la suma, la resta y la multiplicación?
00:06:45
No. Perdón, la suma sí, porque
00:06:48
ya dijimos ayer, aunque volveremos a ello,
00:06:49
que la suma, si tienes
00:06:52
dos cadenas, recordáis que acabamos
00:06:53
ayer así, si la suma
00:06:55
tienes a los lados dos
00:06:58
cadenas entre comillas, la suma
00:06:59
interpreta que lo que tiene que hacer es concatenar.
00:07:01
Pero si lo que tiene son números,
00:07:04
entonces interpretar lo que tienes que hacer es sumar
00:07:05
entonces la suma también es un operador
00:07:08
bipolar
00:07:11
que puede hacer
00:07:12
lo que
00:07:14
una cosa puede hacer otra
00:07:15
es polimórfico como lo queréis llamar
00:07:18
en función de los operandos
00:07:20
la resta no
00:07:21
la resta siempre trabaja
00:07:24
con números
00:07:26
y lo que hace es restar
00:07:27
me da igual que sean decimales que sean enteros
00:07:30
pues la división es como la suma
00:07:32
otro operador polimórfico,
00:07:34
si lo que tiene alrededor
00:07:37
son enteros,
00:07:38
te hace el cociente.
00:07:40
Si lo que tiene alrededor son decimales,
00:07:42
te hace la división con decimales.
00:07:44
Ni cociente ni nada. De hecho,
00:07:46
si mostramos aquí num decimal,
00:07:48
pues la última línea que nos va a mostrar este código
00:07:54
efectivamente
00:07:56
es eso, esa división.
00:07:58
¿Vale?
00:08:01
Es la división decimal de eso.
00:08:02
Que a uno le parece feo
00:08:04
que lo muestre con tantos decimales
00:08:09
él te muestra el número como es
00:08:11
te muestra el número como tal
00:08:13
que es este número, ahora hay otra cosa
00:08:14
es que cuando tú lo miras
00:08:17
físicamente, pero solo para verlo desde fuera
00:08:19
quieras redondearlo, truncarlo
00:08:21
porque el cliente de tu aplicación
00:08:23
quiere el precio, no quiere el precio
00:08:25
con 2000 decimales, a lo mejor ahí te han
00:08:27
pedido, se me va a ir
00:08:29
la batería ya
00:08:30
vale, entonces a lo mejor
00:08:32
ahí te han pedido una aplicación
00:08:50
oye, yo necesito en mi caja de mi tienda
00:08:51
meter un precio y un descuento en el producto que han cogido
00:08:55
y que me muestre rápidamente lo que le tengo que cobrar al tío
00:08:58
bueno, no te preocupes, yo te hago un programa
00:09:00
tú metes el precio y el descuento
00:09:02
y rápidamente vas a ver lo que le tienes que cobrar
00:09:04
al tío que tienes delante
00:09:07
vale, si le hacemos un programa
00:09:08
con lo que nosotros sabemos hasta ahora
00:09:09
hacemos la división y la mostramos
00:09:11
el tío que te ha pedido el programa y lo está ejecutando
00:09:12
pues efectivamente va a ver esto
00:09:15
y a lo mejor te dice
00:09:19
Hijo, hombre, la verdad, yo lo que quiero es que tú me muestres el precio
00:09:22
con dos cifras decimales, truncado, 2,5, o lo que sea,
00:09:25
no me lo muestres así para que yo tenga que hacer el esfuerzo
00:09:29
de quitar la parte decimal.
00:09:31
Vale, eso es simplemente una cuestión de dar formato a la salida, nada más.
00:09:33
Porque el número es el que es, y ahí no hay tu tía.
00:09:37
Y el número que está guardado aquí,
00:09:40
el número este en un decimal es ese,
00:09:45
y tiene esas cifras decimales
00:09:49
y ese es el número que está en memoria RAM
00:09:52
otro aspecto ya es
00:09:54
si yo lo quiero mostrar en la consola
00:09:56
cambiando el formato y truncando
00:09:58
¿vale? entonces
00:10:00
para eso, a esta
00:10:02
sentencia de aquí, se le pueden
00:10:04
pasar cositas que no vamos a ver ahora
00:10:06
porque no vamos a meter estos rollos
00:10:08
que se pueden buscar en cualquier lado
00:10:10
se le pueden pasar cositas para que
00:10:11
te lo muestre, a la hora de mostrarte en consola
00:10:14
te lo muestre truncado
00:10:16
pero eso ya son detalles
00:10:17
que si uno quiere investigar
00:10:19
oye, mostrar en consola con formato
00:10:20
pues se va
00:10:23
¿cómo se muestra en consola con formato?
00:10:24
pues se dice, ah, pues pones por ciento F
00:10:28
o pones no sé qué, el F patatín patatán
00:10:29
y ya está, esa es la típica cosa
00:10:31
que uno le puede preguntar a CharGPT
00:10:33
¿vale? pero porque
00:10:35
sabe exactamente qué es lo que quiere
00:10:37
y qué es lo que hay de fondo
00:10:39
y qué hay de fondo
00:10:42
yo tengo una variable, y esta variable
00:10:42
tiene ese valor, y lo tiene
00:10:45
y es inamovible, tiene ese valor
00:10:47
mi problema no es otro, mi problema no es
00:10:49
mostrarlo en una pantalla para un tío
00:10:51
que lo ve, pues le sea fácil
00:10:53
visualizar lo que
00:10:55
contiene ese numerito y redondearlo
00:10:57
mi problema no es mostrarlo en pantalla, pues entonces ya busco
00:10:58
en chat GPT, mostrar
00:11:01
por consola en Java
00:11:03
un double con la parte decimal
00:11:05
truncada, pues hemos apotado
00:11:07
el problema, queremos eso, pues chat GPT
00:11:09
como eso ya es muy sencillo, es
00:11:11
mirarse a la web y decir, ah pues pones aquí un no sé qué
00:11:13
lo trunca. Pues es probable
00:11:15
que acierte. ¿Vale? Entonces
00:11:17
ese problema, pues sí, lo puede resolver el chargePT.
00:11:19
Pero claro, uno sabe
00:11:21
qué es lo que está haciendo.
00:11:22
Claro, entonces, ¿qué sería un ejemplo de no saber?
00:11:25
Pues que vosotros pensarais
00:11:27
que por poner eso así,
00:11:29
el número decimal es el que se queda truncado.
00:11:31
No, esta variable no se queda truncada,
00:11:33
esta variable es la que es, y está en memoria RAM
00:11:35
con ese valor. Estamos hablando
00:11:37
de que la consola me lo muestre
00:11:39
más bonito. Nada más.
00:11:40
¿Vale? Bueno, pues si uno
00:11:43
quiere mostrar las cosas más bonitas
00:11:44
se va a buscar, yo recomiendo
00:11:46
que no porque no quiero que nos liemos ahora
00:11:49
con esto, vale
00:11:50
pues se va a buscar que cositas puede poner aquí
00:11:52
para que le quede la parte decimal
00:11:55
en dos cifras en vez de en varias
00:11:56
lo digo porque hay veces
00:11:58
por si uno a lo mejor se ve un tutorial de Java o no sé que de Java
00:12:00
pues muchas veces los vídeos de Java
00:12:03
o los tutoriales son como muy en plan chorizo
00:12:04
para hacer esto, para hacer esto, para hacer esto
00:12:07
y de repente llegas para mostrar por consola esto
00:12:08
y te sueltan aquí un chorizo para mostrarlo con decimales
00:12:10
y ves ahí un chorizo de cosas y dices
00:12:12
esto para qué lo quiero y qué me interesa
00:12:14
y te pueden llevar incluso a confusión
00:12:16
sobre lo que estás haciendo
00:12:18
entonces nosotros no nos vamos a meter
00:12:19
en mostrarlo más bonito, porque nos da igual
00:12:22
vale, pues entonces
00:12:24
lo que sí que nos interesaba era
00:12:26
tener claro
00:12:28
que el operador este de división
00:12:31
opera de forma distinta
00:12:32
si mezcla números enteros o decimales
00:12:34
entonces ahora le podríais decir
00:12:36
y si yo pongo un entero aquí
00:12:38
y un decimal aquí
00:12:40
¿quién gana?
00:12:42
¿El cociente o el decimal?
00:12:44
Y no solo quién gana, sino ¿puedo?
00:12:46
¿Me permite el compilador mezclar aquí un número?
00:12:50
Vamos a verlo.
00:12:54
Desde luego con la suma sí.
00:12:56
Por ejemplo, si yo sumo, vamos a hacer ahora.
00:12:57
Vamos a poner aquí para que luego cuando lo ejecutemos.
00:13:02
Pruebas mezclando.
00:13:07
Ah, no, era un sí, se lo quería poner.
00:13:08
Pruebas mezclando
00:13:12
Decimales
00:13:19
Y enteros
00:13:20
Enteros
00:13:23
Vale
00:13:25
Vale
00:13:26
La suma está clara que lo permite
00:13:30
Por ejemplo
00:13:32
Yo en mi numerito decimal
00:13:32
Num decimal
00:13:36
Voy a declararme otra variable
00:13:36
Número entero
00:13:41
Y le voy a asignar el 9
00:13:42
Vale, tengo mi número entero 9
00:13:45
Y ahora a mi variable número decimal le voy a asignar el resultado de sumar numDecimal1 más numEntero, ¿vale?
00:13:48
numDecimal1 lo he debido escribir mal porque, ah, es que no existe, era 2, vale.
00:14:06
Yo he hecho una suma en la cual estoy sumando un double y un int, no hay ningún problema.
00:14:14
la máquina virtual dice, no pasa nada. ¿Por qué?
00:14:22
¿Qué es lo que ha hecho?
00:14:24
Al número entero lo promociona poniéndole
00:14:26
el punto cero.
00:14:28
Hace la suma y lo guarda aquí.
00:14:30
No. Vamos a verlo ahora.
00:14:38
Está claro que esto funciona porque le pone
00:14:40
el número entero. Cuidado, eso no significa
00:14:42
que la variable num entero
00:14:44
haya cambiado a double. No.
00:14:45
La variable num entero sigue siendo
00:14:47
una variable int. Una variable int
00:14:49
en la que yo solamente puedo poner int.
00:14:51
No es que
00:14:54
el operador más haya decidido
00:14:55
promocionar número entero a dabble
00:14:57
y ahora yo pueda hacer esto
00:14:59
no, numentero
00:15:00
sigue siendo una variable entera y en ella
00:15:03
solo caben números enteros
00:15:05
pero, vale
00:15:06
y nume, bueno
00:15:09
que no he puesto el
00:15:11
nombre, ahí
00:15:15
perdón, vale
00:15:18
vale
00:15:20
entonces, numen, un segundito
00:15:22
termino esta, numentero
00:15:25
no lo ha cambiado a dabble
00:15:27
NUM entero sigue siendo entero
00:15:28
y solamente puede recibir enteros
00:15:31
Simplemente lo que ha ocurrido es que para hacer la operación
00:15:32
el valor que tenía NUM entero
00:15:35
el valor lo ha cogido
00:15:37
a ese valor una vez que lo ha sacado de la caja
00:15:38
una vez sacado de la caja
00:15:41
que la caja sigue siendo para enteros
00:15:42
el valor le ha puesto el punto cero
00:15:44
y ahora ya ha hecho la suma con NUM decimal 2
00:15:46
y ya con la suma con decimales
00:15:49
lo guarda en NUM decimal
00:15:51
¿Vale? Hasta ahí claro
00:15:52
¿Pero qué ocurre?
00:15:53
Ahora
00:15:57
Ahora, si intentamos hacer esta misma suma, pero esta misma suma, ¿qué va a funcionar así?
00:15:58
Este voy, cojo el valor y le pongo el punto cero.
00:16:08
Lo sumo en un decimal 2, que será 7.9, lo que sea.
00:16:12
Y ahora voy a guardarlo en este otro.
00:16:15
Aquí no me deja.
00:16:21
¿Por qué?
00:16:22
Porque aquí este numerito me ha dado con decimales, porque es dabel.
00:16:22
Este le ha puesto el punto cero
00:16:27
Este tendrá el decimal que sea
00:16:29
Punto no sé cuántos
00:16:32
La suma tendrá los decimales que sean
00:16:33
Y ahora el copiador dice
00:16:36
¿Eh? ¿Decimal en entero?
00:16:37
No, porque tendría que truncar la parte
00:16:39
Y no se puede quitar información
00:16:42
Sí, pero
00:16:44
Lo vemos un poquito más adelante
00:16:45
¿Vale? Pero él no te lo hace automáticamente
00:16:47
Porque te está quitando información
00:16:50
Te está quitando la parte decimal
00:16:52
Y hombre, no te va a quitar información así por las buenas
00:16:53
Él automáticamente no te lo puede hacer
00:16:55
Tú puedes forzarlo, puedes forzar a quitar la parte decimal, pero lo aparcamos ahora mismo, ¿vale? Entonces es lo mismo que ocurre si yo en mi num entero quisiera guardar en un decimal 2 hacia palo seco, decimal, ¿me diría lo mismo?
00:16:57
me diría, eh, oye
00:17:17
este tiene
00:17:20
aunque sea punto cero, me da igual
00:17:22
aunque sea punto cero, pero ese tiene sus decimales
00:17:23
aunque sea el punto cero, te dice, no
00:17:26
yo no voy a truncar la parte decimal
00:17:27
para que la metas aquí, aunque
00:17:30
en este caso en particular pudiera ser
00:17:31
punto cero, me da igual, no la voy a truncar
00:17:34
no puedes hacerlo
00:17:36
pero al revés, claro que puedes
00:17:37
por ejemplo esto
00:17:39
sí que lo podríamos hacer
00:17:41
esto sí nos deja
00:17:43
porque esta parte no quita
00:17:49
información, él dice
00:17:51
cojo el valor que hay en un
00:17:53
entero de la caja, lo cojo
00:17:55
que será 7, el que sea
00:17:57
una vez que tengo el valor ya metido aquí
00:17:58
fuera de la variable, le pongo el punto
00:18:01
0 y ahora ya con ese
00:18:03
punto 0 va aquí
00:18:05
luego a un double se le puede asignar un
00:18:06
int pero al revés no
00:18:09
y tiene todo el sentido porque al revés
00:18:10
perdemos información y el programa no puede
00:18:12
tirar información de la basura ahí sacándose
00:18:14
de la manga
00:18:17
¿Vale?
00:18:17
Entonces esto
00:18:19
Un int cabe en un double
00:18:20
Ampliando la parte decimal a punto cero
00:18:24
Y un double no cabe en un int porque tienes que quitar
00:18:26
¿Vale?
00:18:28
Vale, pues entonces
00:18:30
Esto
00:18:32
Igual que, es lo mismo que cuando decíamos
00:18:34
Que un int cabe en un long
00:18:36
Y decíamos, a un long le puedes asignar un int
00:18:37
Y él hace una cosa que llamábamos
00:18:40
Promoción automática
00:18:42
Pues esto es lo mismo, también se llama promoción automática
00:18:43
un int cabe en un double
00:18:46
y la máquina virtual lo promociona
00:18:48
automáticamente a double poniendo el punto cero
00:18:50
y ya está, no pasa nada
00:18:51
¿y qué pasa con los float?
00:18:53
los float
00:18:58
funcionan igual en realidad
00:18:59
lo único es que ahora
00:19:00
el float es un número decimal
00:19:02
que admite menos cifras decimales
00:19:03
entonces
00:19:08
aproximadamente
00:19:09
¿ahora hacemos una prueba con la consola? yo creo que sí
00:19:13
creo que sí, pero no estoy segura
00:19:16
vale, yo tengo un número float este de aquí
00:19:18
entonces
00:19:21
admite menos precisión en decimales
00:19:22
lo único
00:19:25
a tener en cuenta es
00:19:27
cuando
00:19:28
le asignáis un valor
00:19:30
le asignáis un valor
00:19:32
para que la máquina
00:19:35
virtual lo entienda
00:19:37
aquí no es
00:19:38
el punto sin más para la parte decimal
00:19:41
como veis me lo he puesto en rojo
00:19:43
porque si vosotros ponéis
00:19:45
8.9
00:19:47
para la máquina virtual
00:19:48
8.9 lo coge y lo interpreta
00:19:50
como un número double
00:19:53
y lo guarda temporalmente en 34 bits
00:19:54
es como cuando hacíamos
00:19:57
¿os acordáis? cuando yo decía
00:19:58
por ejemplo
00:20:01
esto
00:20:04
si, eso es lo que iba a decir ahora
00:20:06
sois muy listillos
00:20:12
un momento, ahora lo digo
00:20:13
esto es como yo decía
00:20:16
si la máquina virtual ve ahí un 7
00:20:18
un 7 sin más
00:20:21
temporalmente
00:20:23
lo almacena como int
00:20:26
y luego ya
00:20:27
hace con él lo que haya que hacer
00:20:29
si yo quiero
00:20:31
¿vale? por ejemplo
00:20:32
esto era, ¿vale?
00:20:38
él, yo veo este numerito
00:20:45
temporalmente él lo
00:20:46
interpreta como int, lo interpreta como int
00:20:48
con lo cual, cuidado, esto no cabe
00:20:50
en int, entonces te lo ponía en rojo
00:20:52
¿Qué teníamos que hacer para que
00:20:54
Él cogiera este número
00:20:56
Y temporalmente lo pusiera en una caja de 64?
00:20:58
Pues le poníamos la L
00:21:01
¿Vale?
00:21:02
Minúscula o mayúscula
00:21:04
Yo la he puesto mayúscula
00:21:05
La puse mayúscula, pero bueno, minúscula también nos valdría
00:21:08
Pues esto es igual
00:21:10
Si vosotros ponéis 8.9
00:21:11
Él empieza a codificar eso
00:21:14
Y lo codifica como dable
00:21:17
Con lo cual, a la hora de
00:21:18
Ese número que acaba de codificar
00:21:21
Llevarlo a este, te dice el compilador
00:21:22
Uy, un DAB en un float no cabe
00:21:24
Entonces
00:21:26
¿Qué hay que hacer para que lo codifique
00:21:28
Internamente como float?
00:21:31
Pues efectivamente ponerle una F
00:21:32
Entonces
00:21:34
Si le ponemos una F
00:21:36
Lo codifica internamente como float
00:21:38
¿Vale?
00:21:40
O sea, igual que para crear el load
00:21:42
Para crear el float siempre tiene que ser
00:21:43
Claro, claro
00:21:45
Aquí no se ve
00:21:46
No, no se llega a ser
00:21:54
no llega a verse
00:21:56
no, hay que mostrarlo con la consola
00:22:00
para que se vea, vale
00:22:05
vale, bueno, pues este es el único matiz
00:22:06
en realidad, que si queréis
00:22:09
que asignar un valor así
00:22:11
directamente, un valor a un número
00:22:13
float
00:22:15
pues tenéis que ponerlo con el
00:22:16
F delante, porque si no va a decir que es
00:22:19
un W y no puede, vale
00:22:21
ahora, para poder usar los
00:22:22
números decimales como datos de entrada
00:22:25
y leerlos por teclado
00:22:28
bueno, antes de cerrar
00:22:29
esto y empezar a teclado
00:22:33
un float cabe en un double y al revés
00:22:35
no, ¿vale? es lo que acabo de decir
00:22:37
eso ya
00:22:39
perdona, creo que tuve que cogerlo
00:22:39
sabe, ¿eh?
00:22:44
¿eh?
00:22:51
sabe
00:22:51
sabe a la música
00:22:52
no es como eso que vendía
00:22:56
con una federación
00:22:58
¡Mierda!
00:23:00
Esta generación es muy biotecnológica en España.
00:23:02
Más con este, más.
00:23:06
Pero de todo que esta generación es materialista.
00:23:13
¿Cómo te acuerdas de ella?
00:23:16
Yo también.
00:23:17
Yo también.
00:23:18
Pero de todo que te acuerdas de ella.
00:23:19
¡Mierda!
00:23:21
¡Gracias!
00:23:30
vale, pues entonces
00:24:05
que float cabe en un double pero al revés no
00:24:19
es como lo mismo, que un int cabe en un long
00:24:21
pero al revés no, bueno, esas cosas ya no hace falta
00:24:23
que lo pongamos en ejemplo
00:24:25
entonces con la división
00:24:27
cuando uno mezcla en operadores
00:24:30
hace la suma de un float y un double
00:24:32
un double y un float, pues lo mismo
00:24:35
el float le puede promocionar
00:24:36
a double si luego el resultado va en un double
00:24:39
pero si el resultado va en un float
00:24:41
no, pero bueno, esas pruebas ya las podéis
00:24:43
hacer vosotros, es siempre lo mismo
00:24:45
como pauta general
00:24:46
normalmente, pues cuando
00:24:48
uno trabaja con decimales usa double siempre
00:24:51
y ya está, porque es
00:24:53
mucho más cómodo si tenemos que darle un valor
00:24:55
directamente, no tener que andar arrastrando la F
00:24:56
ni nada, y aparte tienes más precisión
00:24:58
y total de 32 a 64
00:25:01
tampoco es que vayas a consumir ahí una memoria bestial, ¿vale?
00:25:03
Como pauta general, un double y ya está.
00:25:07
Bueno, y a lo que íbamos.
00:25:08
Ahora, ¿cómo leemos por teclado números double para poder hacer programas?
00:25:10
En nuestra clasecita esta de leer por teclado, ¿vale?
00:25:17
En esta clase de aquí ya hemos visto cómo leer números int.
00:25:21
Nos hemos olvidado por ahora de los short, los byte,
00:25:26
porque para nuestros primeros programas leemos enteros y ya está, int.
00:25:29
¿vale? pues exactamente igual
00:25:33
que este objeto lector que yo os dije
00:25:35
este objeto, es un objeto
00:25:37
que yo me he creado
00:25:39
y al ser una variable objeto
00:25:40
es capaz de hacer cosas
00:25:42
a diferencia de una primitiva
00:25:44
de una variable primitiva que solo tiene un valor
00:25:46
no es capaz de hacer nada, pues esta es capaz
00:25:49
de hacer cosas, pues puede hacer cosas, y una tras otra
00:25:51
una vez tras otra, aquí ya he hecho
00:25:53
una, que es
00:25:55
leer un entero
00:25:57
del teclado, entregármelo
00:25:58
esto último y ya nos vamos
00:26:01
pues igual que este objeto lector
00:26:19
ha podido
00:26:22
leer un entero con esto
00:26:23
pues yo lo puedo seguir usando
00:26:26
y le puedo seguir encargando cosas
00:26:27
por ejemplo, ahora yo tengo aquí
00:26:29
mi numerito de Abel
00:26:31
y ahora me interesa a mí leer
00:26:32
este número por teclado, porque lo voy a usar
00:26:38
para hacer cualquier cosa
00:26:40
el porcentaje o lo que sea
00:26:42
bueno, pues entonces, le tengo que
00:26:43
asignar el resultado
00:26:46
de
00:26:47
darle una orden al lector
00:26:49
de leer por teclado
00:26:52
y así está, es esta
00:26:53
igual que esta
00:26:57
lee un número entero, pues esta
00:26:59
vale, vamos a
00:27:02
mostrarlo aquí, lo probamos para que
00:27:04
veáis una cosa por si queréis practicarlo en casa
00:27:06
y lo dejamos, vale
00:27:08
vale, a ver
00:27:12
si
00:27:17
curioseáis en los objetos
00:27:19
de clase scanner, si curioseáis
00:27:22
veréis que igual que tienen
00:27:24
next int, next double, tienen next short
00:27:26
next byte, next byte, next long
00:27:27
para hacer lo mismo pero leyendo
00:27:30
un número en tamaño byte
00:27:32
un tamaño long, un next float
00:27:34
vale, pero bueno
00:27:36
con next int para leer enteros
00:27:38
y next double para leer decimales
00:27:40
ya podemos hacerlo todo
00:27:41
bueno, pues entonces si probamos
00:27:43
esto, cuidado
00:27:46
porque el next double
00:27:48
es lo que te hace este objeto para leer
00:27:50
el numerito, pero él
00:27:52
no es java, él es un
00:27:54
tío que quiere que las cosas se las digas de otra
00:27:56
manera, entonces vamos
00:27:58
a ejecutar este código de aquí
00:28:00
bueno, esto era de arriba
00:28:01
que ya lo teníamos y ahora se me ha quedado aquí
00:28:09
esperando el double, yo lo tengo ahí esperando el double
00:28:11
le voy a poner 7.8
00:28:12
pum, no le ha gustado
00:28:15
7.8, vale, ¿por qué?
00:28:17
porque aquí no estoy escribiendo código Java
00:28:19
aquí estoy escribiendo
00:28:21
información para el tío
00:28:23
ese lector que está metido ahí dentro
00:28:25
esperando que yo le dé un numerito
00:28:27
con decimales
00:28:30
para con él guardarlo en una variable
00:28:31
y ese tío que está ahí dentro
00:28:33
esperando que yo le dé ese número con decimales
00:28:35
le gusta que se los dé con la cop
00:28:37
porque es a lo que está acostumbrado, porque es un señor
00:28:39
humano que está ahí metido
00:28:41
Pues entonces
00:28:42
Si yo vuelvo a ejecutar esto
00:28:44
Y le doy el numerito
00:28:47
8,8
00:28:50
Este ya sí que le ha gustado
00:28:52
¿Vale? Pero este 8,8
00:28:53
No es código Java, yo no lo puedo meter en Java
00:28:56
Y decir al numerito de Abel igual a 8,8
00:28:58
En Java lo que entiende es esto
00:29:01
De hecho cuando le he pedido que me lo vuelva a mostrar
00:29:02
Ya me lo ha mostrado con el punto
00:29:04
¿Vale?
00:29:06
Esto es porque
00:29:09
Esto está orientado a la interfaz con el usuario
00:29:09
Y de toda la vida
00:29:12
en matemáticas la coma
00:29:13
de la parte decimal hasta se va a poner una coma.
00:29:15
Entonces, se está viendo al usuario
00:29:18
que es el que mete las cosas.
00:29:19
Y el usuario es un humano
00:29:21
que está acostumbrado a la coma
00:29:22
para la parte decimal. Pues por eso
00:29:25
el next double funciona pidiéndote
00:29:27
que se lo pongas como coma.
00:29:29
Venga, y ahora sí que nos callamos
00:29:32
y nos vamos.
00:29:33
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 19
- Fecha:
- 21 de septiembre de 2024 - 16:31
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 29′ 35″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 110.34 MBytes