Tasker Para hablar de todo lo relacionado con la aplicación tasker


 
Herramientas
  #1  
Viejo 31/10/17, 01:12:33
Avatar de ea8rx
ea8rx ea8rx no está en línea
Usuario muy activo
Mensajes: 5,416
 
Fecha de registro: may 2011
Localización: Las Palmas de G.C.
Mensajes: 5,416
Modelo de smartphone: Pixel 8A, Samsung Galaxy Tab A7
Tu operador: Movistar
Mencionado: 33 comentarios
Tagged: 2 hilos
Error de cálculo en Tasker

¿Alguien tiene la solución para corregir el error que produce Tasker al dividir un número de 26 dígitos por otro de dos? El resto de la división es siempre incorrecto. Probablemente dicho error sea producido porque realiza la operación en formato de "notación científica"... Ejemplo: 12345678901234567890123456%97 da un resto de 13 cuando el valor verdadero es 56.

Última edición por ea8rx Día 17/01/18 a las 19:45:43
Responder Con Cita


  #2  
Viejo 31/10/17, 10:26:52
Avatar de WillyWeb
WillyWeb WillyWeb no está en línea
Usuario muy activo
Mensajes: 2,067
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Versión de ROM: OxygenOS 9.0.6 | MIUI 12.5.1
Versión de Radio: Stock
Tu operador: Vodafone
Mencionado: 75 comentarios
Tagged: 3 hilos
Tasker usa las librerías MathEval de Lawrence PC Dol ...

http://www.softwaremonkey.org/Code/MathEval
http://tech.dolhub.com/Code/MathEval

Intenta contactar con el autor para que te confirme si el problema puede ser cosa de su librería o de la implementación del autor de Tasker.

O contacta con Pen (autor de Tasker) en su foro de soporte ...

https://groups.google.com/forum/#!forum/tasker
Responder Con Cita
  #3  
Viejo 31/10/17, 10:28:38
Avatar de WillyWeb
WillyWeb WillyWeb no está en línea
Usuario muy activo
Mensajes: 2,067
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Versión de ROM: OxygenOS 9.0.6 | MIUI 12.5.1
Versión de Radio: Stock
Tu operador: Vodafone
Mencionado: 75 comentarios
Tagged: 3 hilos
Cita:
Originalmente Escrito por ea8rx Ver Mensaje
¿Alguien tiene la solución para corregir el error que produce Tasker al dividir un número de 26 dígitos por otro de dos?
Prueba haciendo el cálculo en JavaScriptlet usando código JS.
Responder Con Cita
  #4  
Viejo 31/10/17, 10:37:28
Avatar de Caravantes
Caravantes Caravantes no está en línea
Usuario muy activo
Mensajes: 2,200
Compra y venta: (1)
 
Fecha de registro: feb 2011
Mensajes: 2,200
Modelo de smartphone: Samsung Galaxy S9
Versión de ROM: Android 8
Tu operador: Lowi
Mencionado: 59 comentarios
Tagged: 4 hilos
Cita:
Originalmente Escrito por ea8rx Ver Mensaje
¿Alguien tiene la solución para corregir el error que produce Tasker al dividir un número de 26 dígitos por otro de dos?
Hola. Me parece muy llamativa esa división de un número con 26 dígitos, y me pica la curiosidad.
¿Te importaría explicarnos qué tipo de tarea necesita hacer esa división? Gracias.
Responder Con Cita
  #5  
Viejo 31/10/17, 11:56:09
Avatar de ea8rx
ea8rx ea8rx no está en línea
Usuario muy activo
Mensajes: 5,416
 
Fecha de registro: may 2011
Localización: Las Palmas de G.C.
Mensajes: 5,416
Modelo de smartphone: Pixel 8A, Samsung Galaxy Tab A7
Tu operador: Movistar
Mencionado: 33 comentarios
Tagged: 2 hilos
Pues 26 dígitos son los que hay que procesar para obtener los dos dígito del IBAN. Ejemplo:
Nª de Cuenta Corriente: 12345678901234567890
El IBAN de esta cuenta sería: ES56 (ES=España y 56 dígitos de control).
Al final el Nº de cuenta sería: ES56 1234 5678 9012 3456 7890
Ese 56 se calcula de la siguiente manera: La E tiene un valor=14 y la S=28. Ahora se añade 142800 a los 20 dígitos de la cuenta quedando un número de 26 dígitos, en este caso: 12345678901234567890142800. Este número se divide por 97 y el resto (no el cociente) se resta de 98 y nos da los dígitos de control que siguen a ES. Si el dígito fuera < 10 se le pone un 0 delante.
En Tasker la operación sería: 98-12345678901234567890142800%97 debiendo dar como resultado 56 (en este ejemplo) pero da 13. Si se hace con la acción de JavaScriptlet sucede lo mismo.
Como dije antes, creo que la mayoría de las calculadoras y sistemas usan notación exponencial y por lo tanto, al trabajar con decimales se produce este error.
Hay docenas de páginas de bancos que calculan on-line el iban de cualquier cuenta pero yo quiero hacerme una tarea local. He encontrado una calculadora en Play que lo hace bien pero no es lo que busco. Por cierto, el algoritmo de cálculo es diferente en los demás países europeos.

Edito: aquí lo explicac mejor que yo... http://www.calculariban.com/CalculoI...lculoIBAN.html

Última edición por ea8rx Día 31/10/17 a las 12:36:44
Responder Con Cita
Gracias de parte de:
  #6  
Viejo 31/10/17, 13:59:17
Avatar de WillyWeb
WillyWeb WillyWeb no está en línea
Usuario muy activo
Mensajes: 2,067
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Versión de ROM: OxygenOS 9.0.6 | MIUI 12.5.1
Versión de Radio: Stock
Tu operador: Vodafone
Mencionado: 75 comentarios
Tagged: 3 hilos
Confirmado, en la web tienes toneladas de funcionas JS que calculan el IBAN.

También he dado con una API fabulosa que hace eso y mucho más ...

https://es.iban.com/calculation-api.html

... pero es de pago, aunque te dejan hacer pruebas gratuitas durante un mes.
Responder Con Cita
  #7  
Viejo 31/10/17, 14:50:43
Avatar de ea8rx
ea8rx ea8rx no está en línea
Usuario muy activo
Mensajes: 5,416
 
Fecha de registro: may 2011
Localización: Las Palmas de G.C.
Mensajes: 5,416
Modelo de smartphone: Pixel 8A, Samsung Galaxy Tab A7
Tu operador: Movistar
Mencionado: 33 comentarios
Tagged: 2 hilos
Cita:
Originalmente Escrito por WillyWeb Ver Mensaje
Confirmado, en la web tienes toneladas de funcionas JS que calculan el IBAN.

También he dado con una API fabulosa que hace eso y mucho más ...

https://es.iban.com/calculation-api.html

... pero es de pago, aunque te dejan hacer pruebas gratuitas durante un mes.

Gracias por tu interés y por la información de esa API pero es mucho lío ya que lo que yo pretendía era hacer una tarea de una o dos líneas para calcular esos dígitos ya que para algunas cosas te piden sólo el número de cuenta pero para otras te piden el IBAN. Ya he encontrado una calculadora científica que lo hace correctamente. Por otra parte el desarrollador de Tasker me ha dicho que él no puede hacer nada porque trabaja con el motor JavaScriptlet de Google que es quien no puede o no quiere manejar ese tipo de operaciones. Por mi parte el administrador puede cerrar este hilo. Gracias a todos.
Responder Con Cita
  #8  
Viejo 31/10/17, 17:29:05
Avatar de WillyWeb
WillyWeb WillyWeb no está en línea
Usuario muy activo
Mensajes: 2,067
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Versión de ROM: OxygenOS 9.0.6 | MIUI 12.5.1
Versión de Radio: Stock
Tu operador: Vodafone
Mencionado: 75 comentarios
Tagged: 3 hilos
Cita:
Originalmente Escrito por ea8rx Ver Mensaje
... lo que yo pretendía era hacer una tarea de una o dos líneas para calcular esos dígitos ...
¿Querías calcular el IBAN de un CCC con una o dos líneas?

Con JavaScript puede ser. Tirando de un API también puede ser. Con acciones de Tasker ya te digo que es imposible.

Y lo que dices que te ha contado Pent sobre "el motor JavaScriptlet de Google", debe tratarse de un mal entendido. Según la documentación de Tasker los cálculos se hacen usando la librería MathEval que te he comentado antes, no usando JS. Y lo del JavaSccriptlet es una acción de Tasker, no un motor JS.

En fin, una pena que des el tema por cerrado. La tarea era interesante.
Responder Con Cita
  #9  
Viejo 31/10/17, 18:06:33
Avatar de ea8rx
ea8rx ea8rx no está en línea
Usuario muy activo
Mensajes: 5,416
 
Fecha de registro: may 2011
Localización: Las Palmas de G.C.
Mensajes: 5,416
Modelo de smartphone: Pixel 8A, Samsung Galaxy Tab A7
Tu operador: Movistar
Mencionado: 33 comentarios
Tagged: 2 hilos
Cita:
Originalmente Escrito por WillyWeb Ver Mensaje
¿Querías calcular el IBAN de un CCC con una o dos líneas?

Con JavaScript puede ser. Tirando de un API también puede ser. Con acciones de Tasker ya te digo que es imposible.

Y lo que dices que te ha contado Pent sobre "el motor JavaScriptlet de Google", debe tratarse de un mal entendido. Según la documentación de Tasker los cálculos se hacen usando la librería MathEval que te he comentado antes, no usando JS. Y lo del JavaSccriptlet es una acción de Tasker, no un motor JS.

En fin, una pena que des el tema por cerrado. La tarea era interesante.

Esta es la última respuesta que me dió el desarrollador de Tasker: If Google's Javascript engine can't handle it, then I have no other possibilities to
offer, sorry
.
Tal vez yo no la traduje muy bien...
En cualquier caso, tengo una calculadora https://play.google.com/store/apps/d...calc.pro&hl=es donde calculo el IBAN correcto en UNA sóla línea...
Sólo tienes que poner esto (las x son el número de tu cuenta): 98-xxxxxxxxxxxxxxxxxxxx142800MOD97
Sólo con esta línea esa calculadora te da correctamente los dos dígitos del IBAN que siguen a ES. Esa línea se puede escribir (y lo he probado) en una variable de Tasker y/o en una variable de JavaScriptlet pero en ambos casos el resultado es erróneo. Un saludo.
Responder Con Cita
  #10  
Viejo 31/10/17, 18:15:17
Avatar de ea8rx
ea8rx ea8rx no está en línea
Usuario muy activo
Mensajes: 5,416
 
Fecha de registro: may 2011
Localización: Las Palmas de G.C.
Mensajes: 5,416
Modelo de smartphone: Pixel 8A, Samsung Galaxy Tab A7
Tu operador: Movistar
Mencionado: 33 comentarios
Tagged: 2 hilos
La cosa en JavaScriptlet sería algo así: var numeros=98-xxxxxxxxxxxxxxxxxxxx142800%97
En Tasker sería establecer una variable %numero=98-xxxxxxxxxxxxxxxxxxxx142800%97
ambas opciones dan el mismo resultado pero INCORRECTO.
Lo cierto es que soy nuevo en Tasker pero lo poquito que voy aprendiendo es seguro.
Un saludo.
Responder Con Cita
  #11  
Viejo 31/10/17, 19:16:39
Avatar de WillyWeb
WillyWeb WillyWeb no está en línea
Usuario muy activo
Mensajes: 2,067
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Versión de ROM: OxygenOS 9.0.6 | MIUI 12.5.1
Versión de Radio: Stock
Tu operador: Vodafone
Mencionado: 75 comentarios
Tagged: 3 hilos
Cita:
Originalmente Escrito por ea8rx Ver Mensaje
Esta es la última respuesta que me dió el desarrollador de Tasker: If Google's Javascript engine can't handle it, then I have no other possibilities to
offer, sorry
. Tal vez yo no la traduje muy bien...
Más bien no.

Lo que te ha dicho es que si no puedes solucionarlo tirando de motor JavaScript él no te puede ofrecer otra posibilidad.

Bastante lejos de ...

... él no puede hacer nada porque trabaja con el motor JavaScriptlet de Google que es quien no puede o no quiere manejar ese tipo de operaciones ...

Cita:
Originalmente Escrito por ea8rx Ver Mensaje
En cualquier caso, tengo una calculadora ... donde calculo el IBAN correcto en UNA sóla línea...
Así que es a eso a lo que te referías con "hacer una tarea de una o dos líneas".

Pensaba que con "líneas" te referías a "acciones" de Tasker.

Vale, dejando al un lado lo mal que te has explicado y lo igualmente mal que te he entendido...

En JavaScript el entero más grande que se puede manejar es 9.007.199.254.740.990 (2^53) que tiene 16 cifras. Seguramente esa "limitación" afecta a más lenguajes de programación.

A pesar de eso es posible calcular el módulo de un número mayor (que es lo que necesitabas en este caso) pero no directamente. Tendrías que usar alguno de los "trucos" que se pueden encontrar en la web.

Por cierto, una calculadora espectacular ... 100 dígitos.
Responder Con Cita
  #12  
Viejo 31/10/17, 22:39:57
Avatar de Xcso
Xcso Xcso no está en línea
Miembro del foro
Mensajes: 111
 
Fecha de registro: may 2010
Localización: Zierzoland
Mensajes: 111
Modelo de smartphone: Nokia 3650
Tu operador: Jazztel
Mencionado: 3 comentarios
Tagged: 0 hilos
ea8rx ha comentado este mismo problema en telegram y le he encontrado una solución, sin utilizar javascript, que expongo aquí para que sirva a otros.

La ídea es que si tasker sólo me deja trabajar con 17 dígitos pues dividamos el problema, exactamente en 2. Al final de cuentas la idea es igual a como cuando dividimos a mano.

Entonces si parto de un número de 24 dígitos lo divido en 2 partes de 12 dígitos que tasker ya puede manejar.

Entonces:
- del número cogemos los 12 más significativos y le aplicamos el mod 97 y obtenemos el resto.
- este se lo añadimos (no sumamos) a los 12 menos significativos con lo que obtenemos un número de 14 dígitos, es decir, quedaría restoxxxxxxxxxxxx siendo x's los dígitos menos significativos mencionados.
- A este número de 14 dígitos le aplicamos el mod 97 y tendremos el resto final a aplicar ya al calculo de código de control (98-resto)

Un saludo.
Responder Con Cita
Los siguientes 2 usuarios han agradecido a Xcso su comentario:
  #13  
Viejo 31/10/17, 22:45:56
Avatar de WillyWeb
WillyWeb WillyWeb no está en línea
Usuario muy activo
Mensajes: 2,067
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Versión de ROM: OxygenOS 9.0.6 | MIUI 12.5.1
Versión de Radio: Stock
Tu operador: Vodafone
Mencionado: 75 comentarios
Tagged: 3 hilos
Más o menos eso es lo que hacen en casi todas las soluciones con JS que he visto.
Responder Con Cita
  #14  
Viejo 31/10/17, 23:01:44
Avatar de ea8rx
ea8rx ea8rx no está en línea
Usuario muy activo
Mensajes: 5,416
 
Fecha de registro: may 2011
Localización: Las Palmas de G.C.
Mensajes: 5,416
Modelo de smartphone: Pixel 8A, Samsung Galaxy Tab A7
Tu operador: Movistar
Mencionado: 33 comentarios
Tagged: 2 hilos
Cita:
Originalmente Escrito por Xcso Ver Mensaje
ea8rx ha comentado este mismo problema en telegram y le he encontrado una solución, sin utilizar javascript, que expongo aquí para que sirva a otros.

La ídea es que si tasker sólo me deja trabajar con 17 dígitos pues dividamos el problema, exactamente en 2. Al final de cuentas la idea es igual a como cuando dividimos a mano.

Entonces si parto de un número de 24 dígitos lo divido en 2 partes de 12 dígitos que tasker ya puede manejar.

Entonces:
- del número cogemos los 12 más significativos y le aplicamos el mod 97 y obtenemos el resto.
- este se lo añadimos (no sumamos) a los 12 menos significativos con lo que obtenemos un número de 14 dígitos, es decir, quedaría restoxxxxxxxxxxxx siendo x's los dígitos menos significativos mencionados.
- A este número de 14 dígitos le aplicamos el mod 97 y tendremos el resto final a aplicar ya al calculo de código de control (98-resto)

Un saludo.

Probado tu método confirmo el correcto funcionamiento. Gracias a todos por vuestro interés y aportes de soluciones valiosas.
Responder Con Cita
Gracias de parte de:
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Otro software para Android > Tasker


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 21:47:58 (GMT +2)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007