Ver Mensaje Individual
  #5  
Antiguo 27-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Gracias si tubieses alguna explicacion a este error seria de mucha ayuda
El motivo es que la representación interna admitida para un número flotante es: [parte_entera] [punto] [parte_decimal]
Tomando como ejemplo el número ciento veinticinco mil con doce, C++ Builder lo representa: 125000.12
Pero al darle el formato con la máscara queda: 125,000.12, representación numérica que no tiene un formato aceptado por C++ Builder.
Y eso mismo es lo que indica el mensaje de error: '125,000.12' is not a valid floating point value, al intentar la conversión de esa cadena.
El echo de que C++ Builder muestre el separador decimal como un punto o una coma es manipulable mediante:
Código:
  DecimalSeparator = '.';  // muestra: 125.000.12
  // o 
  DecimalSeparator = ',';  // muestra: 125.000,12
Pero es sólo al efecto de ser mostrado, internamente se sigue manejando el formato [parte_entera] [punto] [parte_decimal], es por eso que
no genera error si paso previo a la conversión hacemos:
Código:
  Aux = "125.000,12";
  Aux.Delete(Aux.Pos('.'),1);
  StrToFloat(Aux);
Ya que de esta manera se elimina el primer '.' empezando de la izquierda y queda con el formato requerido.


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 27-06-2011 a las 23:56:54.
Responder Con Cita