Hace 1 año | Por mr_b a jvns.ca
Publicado hace 1 año por mr_b a jvns.ca

Los números en los ordenadores se representan mediante bytes, entre ellos los números en coma flotante, que representan números reales. Esta representación es eficiente y compacta y, además, se pueden realizar operaciones aritméticas sobre ella. Pero dicha representación no está exenta de problemas, como que la propiedad asociativa no funciona correctamente, o que se pueden obtener resultados incorrectos al sumar valores extremadamente grandes con valores extremadamente pequeños, o que esta representación tiene dos ceros (+0 y -0).

Comentarios

ContinuumST

Y desde el desconocimiento... ¿Por qué no se pueden usar números decimales en programación?

Acido

#11
Sí se puede.
Pero es menos eficiente.

1°. No olvidemos que aunque un lenguaje de programación puede ser "agnóstico" respecto a cómo se ejecute después... sin embargo, todos los ordenadores actuales (exceptuando unos pocos cuánticos, o algún experimento) son digitales. Es decir, internamente la máquina a la que va dirigida el programa opera con 0s y 1s (en binario)... y no con 10 dígitos (en decimal).

2°. Sí se puede, y de hecho se hace, el representar números decimales en binario. Primero, cuando escribo ahora 3.14159 esos dígitos, el 3, el 1, el 4... se codifican en ASCII, el cual asigna a cada letra o dígito decimal un código de 7 u 8 bits.
Y existe otra forma más eficiente, con 4 bits por dígito. El 9 sería 1001... Y el 0 sería 0000. Esta codificación se llama BCD (Binary Coded Decimal, es decir "decimal codificado en binario").
Pero esto supone usar más memoria y unas operaciones más lentas. A cambio puedes tener más precisión.

ContinuumST

#12 Ah, vale. Gracias por la información.

m

#13 y #12: Como curiosidad, algunos circuitos electrónicos son para convertir de BCD a display de 7 segmentos y punto.

En un Arduino eso significa tener que convertir de binario a BCD.

D

#19 Te puedo dar muchas ideas

Jakeukalane

#20 ¿Te gusta escribir fantasía o ciencia ficción?

D

#24 No, soy a la vez estudiante y profesor, no tengo mucho tiempo libre, ni inspiración a parte de ciertos conceptos que podrían servir mucho para la ciencia ficcion, pero poco más.

Jakeukalane

#25 ah, es que es una wiki abierta, estamos siempre deseantes de nuevos colaboradores No todo son mis locuras, también hay cosas más normalitas

D

#26 Podrías escribir algo y yo te asesoro científicamente jejej hay mucho que escribir sobre cosas que podrían pasar si algo, alguien o nosotros mismos modificamos la constante de estructura fina.

Jakeukalane

#27 bueno, es que normalmente no busco que sea científicamente coherente, pero puede ser interesante. Me gusta inventarme conceptos extraños https://tuscriaturas.miraheze.org/wiki/Es-noexiste por ejemplo

Eso suena muy interesante.

D

#28 Sin saberlo eso es hasta cierto punto, coherente, podría respaldarse con la teoría de los universos paralelos e infinitos y lo que te he dicho de la variación de la constante de estructura fina.

De hecho la realidad es lo suficientemente extraña que prácticamente no hace falta inventarse nada, ya hay muchas cosas que se nos escapan, a veces es más interesante un documental sobre las rarezas del cosmos que muchos textos de ciencia ficción.

Jakeukalane

#29 sí, uso cosas así para medio justificarlo.

D

Cabezón tiene un vídeo muy relacionado, espero que el enlace no sea a un short (desde aquí no lo veo)

D

#2 Este hombre debió pasarlo realmente mal en la EGB

Ya en serio, sus vídeos son oro puro.

D

#3. Creo haber leído que estuvo a punto de ser cura, entrando en el seminario...

Muy mal sin duda

D

#4 Por lo que leo en la wikipedia, tiene titulación de teólogo, aunque no ejerce.

Javi_B

JavaScript

m

#5: Es un fallo que no entiendo, al principio (años 90s) podría entenderlo, pero conforme gana cuota de uso y aplicaciones no tiene sentido no haberlo corregido.

Acido

#31

Me temo que "corregir" eso implica cambios bastante gruesos en el JavaScript.

Dicho de otra forma, quien usa JavaSript DEBE conocer lo que está usando, cómo funciona y las limitaciones que tiene, lo cual implica conocer casos como el mencionado.

Es como si dices algo así como que no entiendes por qué no han arreglado los palillos chinos y los hayan transformado en tenedores, siendo un instrumento que tendrá más de 3000 años y que han tenido tiempo de "arreglarlo". Pero es que quien usa esos palillos sabe usarlos y no son todo desventajas. Por ejemplo, los palillos son más fáciles de conseguir, de almacenar, de transportar y de limpiar. No son "peores en todo" sino peores en algunas cosas y mejores en otras. Es cuestión de costumbre, sí, pero también de la situación o uso que quieras dar usarás una herramienta u otra y sea cual sea la que elijas se supone que debes conocerla. No dar por hecho que si con el tenedor pinchas la comida con los palillos también debes pinchar y "no funciona bien".

m

#33: Ya, pero si hicieran eso (o al menos permitieran declarar variables con tipo) podrían facilitar el uso de JavaScript en otros ámbitos y así no tener que aprender tantos lenguajes o bien tener que lidiar con Python y su estructuración del código basada en poner y quitar espacios en el margen.

Acido

#34
Como se suele decir, "si mi abuela tuviera ruedas sería una bicicleta"

Si obligas a poner tipos a los números estarías, por un lado obligando que haya que escribir más y las páginas web ocuparían un poco más de memoria y tardarían más en ejecutarse y los intérpretes de JavaScript serían más lentos.

Pero hay implicaciones más profundas: si unas cosas llevan tipo y otras no, quitas la flexibilidad tan amplia y dinamismo que tiene JavaScript, que permite guardar cualquier cosa en una variable. O bien obligas a que todo tenga tipo... convirtiéndolo en algo así como Java.

Esto es lo que dije de la abuela y la bicicleta, parece un cambio simple e inocente, pero tiras del hilo y al final cambia todo de una forma muy grande que no esperabas. Y, entonces, las cosas dejan de ser compatibles y no funcionan. Y también se crea confusión, porque no se sabe si es "el JavaScript de siempre" o "el JavaScript tipado del señor mcf".

m

#35: No habría problema: si no te gusta usas var, let y const y listo.
Y si quieres algo más, usas algo en plan "let_8uint", que sí, ocupa más, pero en muchos ámbitos lo que se busca es concretar bien lo que hace el código. ¿Que se podría usar C++? Sí, pero C++ no es JS. ¿Que se podría usar Python? Quizás, pero hay mucha gente que no lo quiere porque su sistema de estructuración del código basado en poner espacios nos parece un chiste y porque visto lo que pasó con Python2 y Python3, no nos fiamos de que vuelvan a romper la retrocompatiblidad.

Jakeukalane

Me lo guardo para intentar leerlo de nuevo en algún momento. Creo que me queda un poco de tiempo para apoder entendender los ejemplos.

crysys

#1 Te aconsejo este enlace también:

https://www.lucidchart.com/techblog/2022/03/04/if-its-not-a-number-what-is-it-demystifying-nan-for-the-working-programmer/

Una pesadilla que se te puede propagar como el ébola por toda tu programación.

Jakeukalane

#7 me encanta. Lo único que no soy programador pero quizás aprender todo eso pueda añadir detalles a mis escritos de fantasía loca (como esto ).

JungSpinoza

#1 #7 #8 Mas sencillo de entender:

https://0.30000000000000004.com/

D

#8 Incluye de alguna forma la energía del vacío, es una energía varios órdenes de magnitud más alta que la fusión que consiste en aprovechar los pares de partículas y antiparticulas que se crean y aniquilan mutuamente constantemente, si logramos capturar muchas de esas partículas tendremos casi energía infinita.

Jakeukalane

#15 es una buena idea, le daré una vuelta. Quizás con vectores de tiempo - antitiempo o algo así.

D

#16 El vector del tiempo es la entropía, aunque tampoco podemos decir que conocemos muy bien el tiempo.

Jakeukalane

#17 tendré que esforzarme más, está ya todo inventado lol

LeDYoM

Me lo dices o me lo cuentas.

S

para colmo tiene un grupo de números llamado "subnormales" donde la escala se convierte en lineal. Se creó para representar númericamente el IQ de los votantes de Vox

systembd

En cuanto al tema de trabajar con números enteros que superan 2^53 en JavaScript... precisamente para eso se ha creado el tipo nativo BigInt. No es algo muy usado (incluso JSON.parse() da problemas con él), pero existir, existe: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt

D

Pone de ejemplo el Deep space kraken de KSP o las farlands de minecraft. Tiene mi voto jajaja

s

Hay un error en la viñeta inferior izquierda.