none
Añadir a una list <FloatF> 2 double RRS feed

  • Pregunta

  • Hola

    Trabajo con C# 2010 visual Express.

    Tengo una list<FloatF> llamada vertices. A dicha lista quiero añadirle dos valores (X e Y) los cuales los tengo guardados en dos variables tipo double ¿Cómo lo realizo?

    Creo que sería algo así pero da error:     

    vertices.Add(new PointF(X, Y);   Error: La mejor coincidencia del método sobre cargado .... tiene algunos argumento no validos.

    ¿Tengo que pasar los doubles a floatF?

    ¿Cómo lo realizo?

    Gracias.

    miércoles, 10 de abril de 2013 15:07

Respuestas

  • Si, debes hacer el cast.

    new PointF((float)v1, (float)v2)

    C# no convierte de double a float automáticamente.

    De todos modos la mejor forma es 

    double d = 65.7623998585;
    float f = float.Parse(d.ToString());

    Osea el parseo directo. esto da el mismo resultado que
    float f = 65.7623998585F;


    Si haces directamente 

    f = (float)d;

    puedes esperar una pérdida de presición, tal vez importante.

    • Marcado como respuesta cutuche miércoles, 10 de abril de 2013 16:12
    miércoles, 10 de abril de 2013 16:04

Todas las respuestas

  • si es un Point no es un float, o sea tienes que definir un

    List<Point>

    y no un List<float> si quieres guardar un x e y

    List<Point>  vertices = new List<Point>();
    
    vertices.Add(new Point(X, Y);


    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 10 de abril de 2013 15:17
  • Hola cutuche

    Lo que ocurre es que tienes declarada la lista de tipo Float, por tanto no puedes agregar un objeto de tipo Point, solo puedes adicionar a la lista objetos del tipo que la declaraste, en el ejemplo que muestra seria de tipo float, así que deberías cambiar la lista a List<Point> vertices ó a List<PointF> vertices si las coordenadas (x,y) las obtienes de tipo float y no int.

    Saludos.

    miércoles, 10 de abril de 2013 15:48
  • La lista es PointF por que los datos tienen valores decimales (por ejemplo: 123,4568) y creo que el Point solo deja int (valores enteros).

    En cuanto a las coordenadas (x,y) están guardadas en tipo double (esto es por que al principio de programar crei que seria así mejor).

    Así que necesito añadir a una lista PointF unos valores x e y que son tipo double.

    gracias.

    miércoles, 10 de abril de 2013 16:00
  • Así que necesito añadir a una lista PointF unos valores x e y que son tipo double.

    entonces vas a tener que convertir la lista, lo que no explicas es como defines una coordenada x e y en una lista float ?

    porque cada item de la list floas es individual no genera un par de valores

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 10 de abril de 2013 16:03
  • Si, debes hacer el cast.

    new PointF((float)v1, (float)v2)

    C# no convierte de double a float automáticamente.

    De todos modos la mejor forma es 

    double d = 65.7623998585;
    float f = float.Parse(d.ToString());

    Osea el parseo directo. esto da el mismo resultado que
    float f = 65.7623998585F;


    Si haces directamente 

    f = (float)d;

    puedes esperar una pérdida de presición, tal vez importante.

    • Marcado como respuesta cutuche miércoles, 10 de abril de 2013 16:12
    miércoles, 10 de abril de 2013 16:04