Para ofrecer las mejores experiencias, utilizamos tecnologías como las cookies para almacenar y/o acceder a la información del dispositivo. El consentimiento de estas tecnologías nos permitirá procesar datos como el comportamiento de navegación o las identificaciones únicas en este sitio. No consentir o retirar el consentimiento, puede afectar negativamente a ciertas características y funciones.
El almacenamiento o acceso técnico es estrictamente necesario para el propósito legítimo de permitir el uso de un servicio específico explícitamente solicitado por el abonado o usuario, o con el único propósito de llevar a cabo la transmisión de una comunicación a través de una red de comunicaciones electrónicas.
El almacenamiento o acceso técnico es necesario para la finalidad legítima de almacenar preferencias no solicitadas por el abonado o usuario.
El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos.
El almacenamiento o acceso técnico que se utiliza exclusivamente con fines estadísticos anónimos. Sin un requerimiento, el cumplimiento voluntario por parte de tu proveedor de servicios de Internet, o los registros adicionales de un tercero, la información almacenada o recuperada sólo para este propósito no se puede utilizar para identificarte.
El almacenamiento o acceso técnico es necesario para crear perfiles de usuario para enviar publicidad, o para rastrear al usuario en una web o en varias web con fines de marketing similares.
Aunque parezca una tontería… Ese cálculo puede salir mal en muchas calculadoras basadas en funciones «normales» de cualquier lenguaje de programación, porque 0.1 decimal, representado en binario, es un número periódico con un periodo bastante largo, de modo que es imposible representarlo con precisión…
Podéis hacer la prueba con python, por ejemplo:
echo "print 1 - 0.9 - 0.1" | pythonO con Ruby:
echo "puts 1 - 0.9 - 0.1" | rubyEn cambio, el programa
bcestá pensado para precisión arbitraria:echo "1 - 0.9 - 0.1" | bcDe todas formas, 2.77e-17 son 28 partes en un trillón…
Si lo hiciéramos en C, el error no se produciría si utilizáramos simple precisión (32 bits), pero sí si utilizásemos doble precisión (64 bits).
Ítem más: el límite de precisión en cálculos de 64 bits (lo que se suele llamar épsilon, ε, es de 222 partes en un trillón, de modo que el resultado, en realidad, es 0, porque es menor que la precisión del cálculo.
El ejemplo para Python también sirve para Perl, cambiando python por perl —quién lo hubiera dicho ;-)—.
eso es porque el problema esta mal condicionado,
habria que ver la posicion relativa de las rectas
y=1 , 0.9x+0.1y=1 y las que coje la maquina cometiendo
ese pequeño error de precision, y veremos como la solucion
de la ecuacion se desplaza un huevo,
no es un error del lenguaje de programacion,
es un error de precision de la maquina y del ingeniero
que hace el programa, claro que el que mas culpa
tiene es el ingeniero, que no tiene ni puta idea
de algebra lineal y numerica.
Es como el excel, si le pones cos(radianes(90) da 6,12574E-17 en vez de 0. Y ocurre esto en todas las versiones del excel que he probado.
El origen es debido a un error de redondeo del programa, aunque si fuera asó tendría que ocurror lo mismo con el seno de 0, cosa que no pasa.Lo gracioso es quie en openoffice y demás hacen bien este simple cálculo.
perdon la recta y=1 no, sino la x=1, con la y=1 si que funcionaria mejor el problema.
probad con 1 -1/3 -2/3
AHHHHH Pedrolo, gracias por la corrección…
esta vez el error es bajo pero todo el mundo sabe que es cero
Hemos vuelto al tiempo de los primeros pentium ¡horror!
Otro detalle curioso, poned:
answer to life, the universe and everything
Tambien hace saltar la calculadora de google (si alguien no sabe que significa, guia del autoestopista galactico).
Shin, no tiene nada que ver.
El resultado anterior es un resultado predecible y «correcto» en binario —y como ya he comentado, por debajo de la precisión disponible, y reproducible en diferentes lenguajes de programación… en nuestra propia máquina—. El problema de los Pentium era un fallo que daba un resultado binario incorrecto… y por supuesto, un resultado decimal incorrecto, muy por encima de la precisión de la máquina.
joer… yo que soy licenciado en Derecho, me lo tendré que creer, no?:P
Yo creo que el el problema del cálculo es que claro, usan el sistema anglosajón y no el sistema métrico… si todos estos programas y calculadoras usasen la coma como decimal, vamos, seguro seguro que saldrían mejor las cuentas, jajajajaja…
Lo siento, no he podido evitar sacar de nuevo mi vena defensora del sistema métrico, que sin darnos cuenta lo estamos perdiendo. La mayoría de los hispano-hablantes cuando leemos «1.25» pensamos «uno coma veinticinco»… ¿entonces por qué lo escribimos sin darnos cuenta con el punto?
Amfortas, tienes razón… pero los trozos de código que he puesto no funcionan si pones la coma como separador decimal… marditoz angrozajonez…
Me recuerda mi primera clase de Métodos Numéricos en la universidad, donde me enseñó el profesor tantos ejemplos en los que el Ingeniero involuntariamente introduce mala información y la computadora entrega resultados no deseados.
Por otra parte, sé que España es el único país hispano-parlante en el que se utilizan comas flotantes en vez de puntos flotantes.
España de único país hispano-parlente que usa la coma NADA. Digamos que la cosa está dividida al 50%, o más bien 60% que usan la coma y 40% que usan el punto.
En América cuanto más nos acercamos a los Estados Unidos, más países usan el punto como decimal y cuanto más tiramos hacia el sur más usan la coma. Se podría decir que centro-américa usan más el punto y sur-américa más la coma.
En Europa la inmensa mayoría usa la coma como decimal y con respecto al resto del mundo ya depende de la influencias que tubieron esos países por parte de otros. Japón por ejemplo casi todo su sistema de medidas lo han cogido de los EE.UU, mientras que buena parte de África y Asia el sistema lo han cogido de los franceses, belgas, portugueses y de los ingleses.
Como normativa a nivel internacional, para trabajos, proyectos, etc… que se presentan a la comunidad internacional, se han de hacer en el Sistema Internacional de Unidades y que es básicamente el sistema métrico con algunas variaciones.
Pero claro, en la informática e internet queramos o no, la influencia de los anglosajones en mayor y sin darnos cuentas estamos usando cada vez más su sistema de medidas sin darnos cuenta que, personalmente creo, que el nuestro es mejor y como digo, algo más mayoritario.
Lo han arreglado.