![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Funcion Frac(x)
queria saber si hay otra manera de sacar la parte decimal de un numero real parecida a la funcion FRAC(X), tengo un problema con esta.
me devuelve lo siguiente: en el primer calculo..... X:= 1425.412 Y:= 25 entero:= trunc( X / Y); fraccion:= frac( X / Y)* Y; saca lo siguiente X:= 57 Y:= 0.412 //*/*/*/*/*/ en el segundo calculo..... X:= 1472.145 Y:= 25 entero:= trunc( X / Y); fraccion:= frac( X / Y)* Y; saca lo siguiente X:= 58 Y:= 0.999 ALGUIEN SABE PORQUE O COMO SOLUCIONARLO.... saca lo siguiente X:= 57 Y:= 0.412 |
#2
|
|||
|
|||
perdon añadiendo a lo anterior en la segunda vuelta
saca lo siguiente X:= 58 Y:= 9.999 |
#3
|
||||
|
||||
1425.412 / 25 = 57.01648 --> trunc = 57
frac(1425.412 / 25) = 0.01648 * 25 = 0.412 1472.145 / 25 = 58.8858 --> trunc = 58 frac(1472.145 / 25) = 0.8858 * 25 = 22.145 Creo que el problema es que no estás mostrando bien el resultado. |
#4
|
||||
|
||||
Aparte de esto, qué es lo que quieres hacer con estas funciones?
Porqué multiplicas la parte decimal por Y? Si solo quieres los decimales, no necesitas multiplicar por nada. |
#5
|
|||
|
|||
un ejemplo tienes un producto que tiene peso total t peso por bulto
digamos: tienes 10984 kilos de arroz y cada bulto pesa 50 Kilos para hacer la conversion y saber cuantos bultos y cuanto de fraccion tienes se hace lo siguiente... 10984/50= 219.68 tengo 219 bultos de 50 kilos cada uno y... 0.68*50=34 34 kilos en fraccion que seria equivalente a 219 bultos + 34 kilos = 10984 kilos de arroz pero el problema que tengo es que en el primer calculo me da correcto como debe de ser pero si trato de hacer el mismo calculo con otros datos en la fraccion me saca 9.9999 sea cual sea el valor no se donde puede estar el error, el procedimiento de las formulas es el siguiente.. X:= 1425.412 Y:= 25 entero:= trunc( X / Y); fraccion:= frac( X / Y)* Y; saca lo siguiente X:= 57 Y:= 0.412 //*/*/*/*/*/ en el segundo calculo..... X:= 1472.145 Y:= 25 entero:= trunc( X / Y); fraccion:= frac( X / Y)* Y; saca lo siguiente X:= 58 Y:= 9.999 POR ESO NO SE DONDE PUEDE ESTAR EL ERROR!!!! |
#6
|
|||
|
|||
y si usas un tipo de datos diferente? por ejemplo el currency?? ya me ha sacado de varios problemas este tipo de datos que ya mejor lo pongo por default cuando manejo cualquier decimal
|
#7
|
|||
|
|||
Antes de utilizar numeros en punto flotante en nuestros calculos es importante entender como funcionan, hay muchos tutoriales por ejemplo:
http://support.microsoft.com/kb/42980/es http://www.cs.utah.edu/~zachary/isp/applets/FP/FP.html Saludos |
#8
|
|||
|
|||
No heprobado los cálculos para ver si dan los valores correctos, probá así:
Creo que anda bien Saludos Última edición por Robert01 fecha: 15-01-2008 a las 17:54:13. Razón: Se desordenó el código |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Funcíon % de CPU | jorgegetafe | Varios | 0 | 03-11-2007 17:17:54 |
funcion en php | KeyMan | PHP | 2 | 23-04-2007 21:11:52 |
Función Last | Triton | Firebird e Interbase | 2 | 25-05-2005 17:46:50 |
La función Ord() | soul6301 | Varios | 2 | 27-06-2004 01:43:17 |
funcion | agora18 | SQL | 1 | 06-10-2003 07:18:30 |
![]() |
|