Parece una pregunta sencilla...

#2
Aquí tienen la excusa algunos dirigentes para justificar las ñapas de gestión económica que han hecho!
 
#3
Un amigo mío informático me decía que todo código de programación funciona siempre bien. Hace exactamente lo que tiene que hacer. Pero no necesariamente hace lo que el programador pensaba o quería que fuera a hacer. Si la respuesta recibida no era la deseada no es porque no fuera correcta, si no porque el algoritmo de programación estaba mal planteado.

Es decir, el error parte siempre del humano que diseña el algoritmo y lo traduce al lenguaje de programación. Eso traslada al humano toda la responsabilidad del funcionamiento de una línea de código. Lo cual, a mi modo de ver, es maravilloso. Aunque en el futuro quizá las líneas de código sean capaces de auto-regularse y auto-corregirse más allá de la intención original del humano. Pero claro, entonces el resultado que arroje puede no ser el deseado por el humano... y ser un "error" deliberado, deseado y buscado por el propio código a espaldas del deseo original del humano...
 
#5
Realmente, no es un error, es un reflejo de como piensa un ordenador, y el sistema binario.
Con base 10, es imposible escribir "correctamente" un tercio, es decir: 0.3333periodo, no se puede a menos que usemos la expresion 1/3.
Sin embargo, si usaramos numeracion de base 3, un tercio seria "1", pero eso no significa que la numeracion de base 10 sea erronea.
Otra cosa es que el programador sea consciente y lo corrjia, que hay metodos, aunque yo he visto programas calculadora con este error sin corregir
 
#6
No puedo leer la pregunta, tengo que aceptar cookies y entre que tengo el ordenador limpito y que tras el roscón de Reyes no me entra un dulce más, me niego.
 

bicilindro

Gran maestro
#7
El problema es semántico pero tiene que ver con llamar "lenguaje" a las instrucciones para ordenadores.
Eso genera ambigüedad porque, para las máquinas, ese lenguaje son órdenes y, como se ha dicho, siempre son correctas.
En cambio, para las inteligencias, el lenguaje es un catalizador del pensamiento íntimo.
mil trillones menos uno es, siempre, más pequeño. No porque lo diga el lenguaje sino porque así se razona.
"Un tercio" es un concepto de la inteligencia.
Requiere un todo, y una parte.
"Un tercio más un quinto", además de más alcohol, es un acto de inteligencia.
 

davidn

Gran experto
#8
Depende de la longitud que le des a la cadena. Normalmente se le asigna un número limitado ya que ocupan la misma memoria sea cual sea el número. En caso de superar esa cifra emiezan los redondeos desde los enteros más cercanos a la coma (o al revés, depende del programador).

Eso son restos de cuando los ordenadores tenían una memoria más limitada y te tenía que caber todo en un dikette.
 
#9
Eso son restos de cuando los ordenadores tenían una memoria más limitada y te tenía que caber todo en un dikette.
No, el efecto 2000 era por eso, el error de coma flotante no tiene que ver con la memoria, sino con la forma de computar en sistemas binarios.
Si usas firefox abre la consola y pega esto y dale a return:
console.log(0.1+0.1+0.1)

El resultado no es 0.3 sino 0.30000000000000004

Y es porque en base binaria no se puede representar 0.1 igual que en base 10 no se puede representar 1/3
Aqui esta mas y mejor explicado:

http://docs.python.org.ar/tutorial/3/floatingpoint.html
De la misma manera, no importa cuantos dígitos en base 2 quieras usar, el valor decimal 0.1 no puede representarse exactamente como una fracción en base 2. En base 2, 1/10 es la siguiente fracción que se repite infinitamente:
0.0001100110011001100110011001100110011001100110011...
 
Me gustas: pnc
#10
...Es decir, el error parte siempre del humano que diseña el algoritmo y lo traduce al lenguaje de programación. Eso traslada al humano toda la responsabilidad del funcionamiento de una línea de código..
Esa es la razón por la cual el humano programador-vendedor de software (que no es tonto, al menos el de software técnico) te hace firmar (electrónicamente), antes de que uses su código, una cláusula según la cual, a pesar de que su software es maravilloso y superferólitico (lo que bien que se encarga de publicitar), peeeeeeeeeeero, si en el proceso de producción de servicios técnicos hay alguna cag....; la cag.... es tuya y no de él. Y si no firmas y aceptas no usas el código.
El humano programador no es tontoooo....
 
#12
¿No se os ha ocurrido algo más ameno para un día "post-Reyes"?
Si queréis pasarlo bomba empezamos con las integrales de Riemann.:p
 

Nano

Gran experto
#13
Es que estoy viendo que excel me convierte la última cifra en un cero... :oops:
Le meto los 15 nueves y cuando le pongo la cifra 16, da igual que sea 9 u 8, te pone un cero... o_O
 

pnc

Gran maestro
#17
En Octave tampoco:
>> 9999999999999999.0 - 9999999999999998.0​
ans = 2​
Y en la consola de Firefox, tampoco:
9999999999999999.0 - 9999999999999998.0​
2​
 
Arriba