Ir al contenido


Foto

case con datos currency


  • Por favor identifícate para responder
11 respuestas en este tema

#1 root

root

    mister

  • Miembro Platino
  • PipPipPip
  • 529 mensajes
  • LocationMexico D.F:

Escrito 01 julio 2013 - 11:24

Buen dia
después de tiempo de desaparecido aca ando de nuevo

pregunta como puedo aplicar un "case" a un valor currency
o si hay alguna otra solución para tomar un valor currency
y compararlo entre 8 distintos juegos de valores

yo tenia pensado algo así



delphi
  1. case compra of
  2.  
  3. 250 .. 499: label10.Caption:= '1' ;
  4. 500 .. 999: label10.Caption:= '2' ;
  5. ...
  6. ...
  7. 14999 .. 24999: label10.Caption:= '13' ;
  8.  
  9. else label10.Caption:= 'no aplica'
  10.  
  11. end;



alguna idea o sugerencia
haaa NOTA el datos de 'compra' esta en currency


  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 01 julio 2013 - 11:33

Que tal amigazo root

Yo haría ésto:



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.   compra: real;
  4.  
  5. begin
  6.   compra := strtofloat( edit1.Text );
  7.   case Ceil(compra) of
  8.     1..100: label10.Caption:= '1';
  9.     101..200: label10.Caption:= '2';
  10.     201..300: label10.Caption:= '3';
  11.     301..400: label10.Caption:= '4';
  12.     401..500: label10.Caption:= '5';
  13.     501..600: label10.Caption:= '6';
  14.     601..700: label10.Caption:= '7';
  15.     701..800: label10.Caption:= '8';
  16.     801..900: label10.Caption:= '9';
  17.     901..1000: label10.Caption:= '10';
  18.   end;
  19. end;



Saludos
  • 0

#3 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 01 julio 2013 - 11:36

Nomás hay que tomar en cuenta que 24999.00000001 es mayor que 24999. Deberás tener bien presente cómo vas a manejar los decimales, también cuentan.
  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 01 julio 2013 - 11:38

Nomás hay que tomar en cuenta que 24999.00000001 es mayor que 24999. Deberás tener bien presente cómo vas a manejar los decimales, también cuentan.


Para eso es precisamente Ceil() mi chavo ;)

Saludos
  • 0

#5 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 01 julio 2013 - 11:43

Extraido de la ayuda de Delphi.

Description

Call Ceil to obtain the lowest integer greater than or equal to X. The absolute value of X must be less than MaxInt. For example:

Ceil(-2.8) = -2
Ceil(2.8) = 3
Ceil(-1.0) = -1


Hice la prueba y calcula bien hasta 4 decimales, supongo que no usarás más de esos.

De tal forma que si buscamos el valor 100.0001 lo asigna al rango 2 que es de 100 a 200.

Saludos
  • 0

#6 root

root

    mister

  • Miembro Platino
  • PipPipPip
  • 529 mensajes
  • LocationMexico D.F:

Escrito 01 julio 2013 - 11:45

pregunta

ceil( )

no lo reconoce delphi 2010

lo puedo ocupar con
round( )
?
  • 0

#7 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 01 julio 2013 - 11:47

pregunta

ceil( )

no lo reconoce delphi 2010

lo puedo ocupar con
round( )
?


Claro que si lo reconoce, lo hice con Delphi 2007, sólo debes agregar la unidad Math, que pasó mi chavo esas son de primaria...... :p

Saludos
  • 0

#8 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 01 julio 2013 - 11:48


Si usas round() no te va a funcionar

Round(100.0001) = 100
Ciel(100.0001) = 101

Saludos
  • 0

#9 root

root

    mister

  • Miembro Platino
  • PipPipPip
  • 529 mensajes
  • LocationMexico D.F:

Escrito 01 julio 2013 - 11:54

es que tuve que regresara a programar por que ahora
los descuentos se calculan al vuelo
en base a las vetas del mes anterior y varios factores hay

despues de mas de 18 meses sin una sola linea de codigo

ya se me andaba olvidando como usar ZEOS

jajajjajaa

GRACIAS A TODOS SALU2
  • 0

#10 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 mensajes
  • LocationMéxico

Escrito 01 julio 2013 - 11:59


Si usas round() no te va a funcionar

Round(100.0001) = 100
[b]Ciel[/bold](100.0001) = 101

Saludos


¿Este es el foro para eso? o ¿a donde te mandamos la factura de la publicidad? :) (b)
  • 0

#11 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 01 julio 2013 - 12:18



Si usas round() no te va a funcionar

Round(100.0001) = 100
Ciel(100.0001) = 101

Saludos


¿Este es el foro para eso? o ¿a donde te mandamos la factura de la publicidad? :) (b)


Caramba!!!! ya no se puede hacer publicidad subliminal porque luego luego sacan a uno al balcón jajajaja :p

Saludos
  • 0

#12 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 02 julio 2013 - 05:18

Nomás hay que tomar en cuenta que 24999.00000001 es mayor que 24999. Deberás tener bien presente cómo vas a manejar los decimales, también cuentan.


Extraido de la ayuda de Delphi.


Description

Call Ceil to obtain the lowest integer greater than or equal to X. The absolute value of X must be less than MaxInt. For example:

Ceil(-2.8) = -2
Ceil(2.8) = 3
Ceil(-1.0) = -1


Hice la prueba y calcula bien hasta 4 decimales, supongo que no usarás más de esos.

De tal forma que si buscamos el valor 100.0001 lo asigna al rango 2 que es de 100 a 200.

Saludos


Les recuerdo a los dos que el tipo Currency NO TIENE MAS DE 4 DECIMALES. Es inútil buscarle más.
Si tuviera más no podría ser posible trabajar con currency y optar por otro tipo de coma flotante.

Es el formato ideal y justamente pensado y diseñado para trabajar con números y expresiones monetarias. No existe, hasta el momento, país cuyo sistema de moneda tenga una numeración inferior al centavo/céntimo.
Se pensarán que ya que no hay más allá del céntimo entonces porqué es que tiene 4 decimales. Pues, la respuesta es fácil: Multipliquen dos números cualesquiera con 2 decimales y díganme cuántos decimales se obtienen  ;). Además, esto permite que efectivamente cualquier operación que se realice sobre un Currency se haga con precisión exacta.

Recuerden que el Currency no es más que un alias del integer.

EDIT:
En lugar de un FloatToStr sugiero emplear la función que trabaja con el tipo adecuado: CurrToStr.

Saludos,
  • 0




IP.Board spam blocked by CleanTalk.