Desglose de horas. |
Responder |
Autor | |
mfafa
Asiduo Unido: 23/Septiembre/2009 Localización: España Estado: Sin conexión Puntos: 497 |
Opciones de entrada
Gracias(0)
Enviado: 25/Febrero/2021 a las 11:24 |
Buenos días!
Tengo las siguientes siglas y sus valores en horas:- - Mv = 4 horas - Mw = 3,5 horas - Mr = 3 horas - Ms=2,5 horas - Mi = 2 horas - Mx < 2 horas En un formulario recojo las horas trabajadas de cada trabajador, supongamos que el trabajador1 ha hecho durante un mes 26 horas, estas serían según las siglas: Mv (6 veces) + Mi (1 vez). Otro trabajador ha generado 25,5 horas, estas serían = Mv (6 veces) + Mx (90 minutos). ¿Como podría hacer el cálculo? Muchas gracias Editado por mfafa - 25/Febrero/2021 a las 13:02 |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14746 |
Opciones de entrada
Gracias(0)
|
Hola,
Yo lo enfocaría con un "step-by-step" Tomaría las horas iniciales y haría la división entera por el valor de tramo más alto (Mv). intVeces = NumHoras \ Mv Y también obtendría el residuo de esa división dblResiduo = NumHoras Mod Mv Si intVeces > 1, empezaria la cadena de resultado: Mv (intveces) Si dblResiduo = 0 es que ya hemos terminado. En el siguiente paso ya no tomaria las horas para calcular las veces si no el residuo del primer paso intVeces = dblResiduo \ Mw Si intVeces > 0, concateno esas veces al resultado --> strResultado = strResultado & "+ Mw (intVeces) y calculo el nuevo residuo --> dblResiduo = dblResiduo Mod Mw Evaluo el nuevo residuo y, si es 0, ya puedo salir. A partir de aqui solo se trata de copiar el código cambiando el valor de referencia (Mr, Ms, Mi, Mx) Finalmente tratar la cadena resultante para eliminar los + de más al principio Unica pega: cuando calculo cuantas veces cabe un entero en un decimal (2 \ 2.5) me dice que 1... y no se porqué. Bueno, ahí tienes la idea. |
|
prga
Moderador Unido: 16/Noviembre/2004 Localización: España Estado: Sin conexión Puntos: 3525 |
Opciones de entrada
Gracias(0)
|
Hola.
Creo, y digo creo, que el operador \ "solo" trabaja con Enteros(long) y si se encuentra un Decimal, lo redondea a entero. En el redondeo el 2.5 lo convierte a 2, da ahí el 1
|
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14746 |
Opciones de entrada
Gracias(0)
|
Pues tiene toda la lógica. Supongo que yo optaría por multiplicarlo todo por 100 para evitar decimales.
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |