Visual Basic - problemas con los decimales

Life is soft - evento anual de software empresarial
 
Vista:

problemas con los decimales

Publicado por angelus (7 intervenciones) el 09/02/2003 11:00:59
hola,he hecho un factura en donde me calcula las unidades de compra,el precio unidad,el % del descuento y me da el total ,pero cuando incluyo varios totales en la misma facturay tengo que sumarle la columna entera para calcular el total final + el 16% no me calcula bien los decimales por ejemplo si el total me da 1342,34 al calcularlo me da 1344,54 ,donde puede estar el fallo ?yo creo que son las variables .
yo las he creado con el valor currency pero me da error el total,tambien en single y tambien,y con double,soy novato y no estoy seguro si para calcular decimales de moneda necesita algun otro de funcion,no se.....gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problemas con los decimales

Publicado por bla (230 intervenciones) el 09/02/2003 19:09:02
Por algún sitio estás perdiendo decimales.
Una buena idea es utilizar variables de tipo decimal (variantes de subtipo decimal)
dim a as variant
a=cdec(0)
Así te asegurarás de que el valor usado en los cálculos es exactamente el que tu le has dicho.
Ten en cuenta también que al calcular el % de descuento estás despreciando decimales, así para calcular el 9% de 9.15€ deberías usar: a=cdec(round(9.15 * .09,2)), es decir el 9% redondeado a 2 decimales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problemas con los decimales

Publicado por angelus (7 intervenciones) el 09/02/2003 20:50:06
Gracias,no sabia eso de round,
asi que si pongo a=cdec(round(9.15 * .09,2)) los precios se redondearan solo con 2 decimales?
Perdona por mi ignoracia pero soy novato.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problemas con los decimales

Publicado por angelus (7 intervenciones) el 09/02/2003 22:03:22
Creo que he encontrado la variable que pierde los decimales te pongo el codigo:
Dim x As Currency
Dim y As Currency
Dim v As Currency

Private Sub txtiva_GotFocus()
y = Val(txtpreuto1.Text) + Val(txtpreuto2.Text) + Val(txtpreuto3.Text)
v = y * 16 / 100
txtiva.Text = v + y
txtpessetes.Text = Val(txtiva.Text) * 166.386
End Sub

he mirado el error paso a paso y la operaciones las hace bien sin embargo la variable "y" cuando hace la suma de
Val(txtpreuto1.Text) + Val(txtpreuto2.Text) + Val(txtpreuto3.Text) guarda solamente el numero entero pasando olimpicamente de los decimales,por lo que las operaciones siguientes no da el resultado verdadero.
Como puedo hacer para que la variable "y" tenga en cuenta los decimales ?
salu2!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problemas con los decimales

Publicado por alberto (278 intervenciones) el 10/02/2003 15:23:11
val no pasa de los decimales, pero el carácter a usar debe ser el punto, si usas la coma en los textbox val interpreta la coma como no númerico e ignora el resto.
Si quieres usar la coma debes usar la función cdbl o ccur pero en este caso debes tener en cuenta que el punto es ignorado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problemas con los decimales

Publicado por Ramiro Benavides (28 intervenciones) el 11/02/2003 05:20:16
He visto tu problema y es simple de resolver. Cambia la funcion val() por la funcion cdbl(). El tipo numerico con decimales simpre debe ser doble y val convierte numeros de tipo long y/o integer (entero largo o corto).

Hay otras consideraciones para campos con decimales al realizar operaciones complejas. Pero si soluciona tu problema, mejor. Sino me avisas para explicartelos.

Ramiro

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problemas con los decimales

Publicado por angelus (7 intervenciones) el 11/02/2003 07:24:37
Muchas gracias ,voy a probar esta noche os digo algo.
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problemas con los decimales

Publicado por alberto (278 intervenciones) el 12/02/2003 15:22:31
Lo que dices no es cierto, val convierte perfectamente a tipo Double, lo que ocurre es que solo convierte hasta el primer caracter no númerico de la cadena, además ignora la configuración regional del PC, con lo que val("2,3") ignora ',3' y su resultado es 2. mientras que val("2.3") devuelve correctamente 2.3
Por contra cdbl no ignora la configuración regional y por lo tanto cdbl("2,3") devuelve 2.3, pero cdbl("2.3") devolverá un error
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problemas con los decimales

Publicado por angelus (7 intervenciones) el 12/02/2003 22:20:30
Hola de nuevo,ya lo he hecho ,he usado cdbl() en double y va perfectamente ,el inconveniente es que para poner un numero con decimales tengo que poner una coma y no punto,puesto que si pongo punto me corre dos decimales a la derecha ej.si quiero sacar 1,345 si la operacion la hago con punto entonces el resultado me daba 134,5 errando .
No obstante si hago todas las operaciones usando la coma .en cdbl() y la variable es double me funciona a la perfeccion.
No he puesto todo el codigo por que si lo pongo os reis de mi... ya que me he pegado una panzada de poner codigo y estoy seguro que vosotros simplemente con algun bucle solucionariais el problema.
Pero de verdad que os estoy muy agradecido a todos vosotros por vuestra ayuda.
gracias y hasta otra.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar