none
Asesoramiento sobre que utilizar RRS feed

  • Pregunta

  • Hola,

    Trabajo con C# visual 2010 express windows from.

    Un pequeña aplicación que me estoy realizando utiliza coordenadas X y coordenadas Y, estas son obtenidas de un GPS o bien introducidas por el cliente. La composición de una X y una Y es un punto (en el plano).

    Los valores para las coordenadas Y rondan por ejemplo 4445875,567 (m), es decir tienen 7 digitos enteros y 3 decimales.

    Los valores de las X son 6 digitos enteros y 3 decimales.

    En un principio habia creado una variable double X para la X, y una variable double Y para la Y (esto lo hice así  por la precisión que necesitaba ya que tenia decimales).

    Los puntos (x,y) los iba guardando en una list<double> X para la X. y una list<double> para la Y.

    Después me aconsejaron que en vez de dos list<double> utilizara una list<point>, así que cree una lis<pointF> donde iba guardando la x y la y de los puntos a la vez.

    Pero ahora resulta que no voy a poder tener la precisión que quiero es decri por ejemplo 4445875,567. ya que le pointF se queda en 4445875 e ignora los decimales.

    Con la lista de puntos que voy almacenado calculo superficies, distancias ..... 

    Mi pregunta es.

    ¿Qué me aconsejais que utilice?

    Por un lado quiero precisión de 7 digitos enteros y 3 decimales.

    Y por otro sería "logico" guardarlo en alguna lista tipo point.

    Gracias

    miércoles, 10 de abril de 2013 17:29

Respuestas

  • Pero ahora resulta que no voy a poder tener la precisión que quiero es decri por ejemplo 4445875,567. ya que le pointF se queda en 4445875 e ignora los decimales.

    y porque no creas tu propia clase

    public class Coordenada{

        public double X {get; set;}

        public double Y {get; set;}

    }

    definiendo una lista como ser

    List<Coordenada>

    de esta forma tienes la precision que necesitas y en una lista la puedes usar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    • Editado Leandro TuttiniMVP miércoles, 10 de abril de 2013 17:39
    • Marcado como respuesta cutuche jueves, 11 de abril de 2013 10:15
    miércoles, 10 de abril de 2013 17:39
  • Porque no creas tu propia clase Point, por ejemplo PointD con campos X Y  como doubles??

    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos

    • Marcado como respuesta cutuche jueves, 11 de abril de 2013 10:16
    miércoles, 10 de abril de 2013 17:40
    Moderador
  • Para añadir un elemento a una lista debes hacer lo siguiente

    private void button1_Click(object sender, EventArgs e) {

    coordenadas punto = new coordenadas();

    punto.X = 23.34

    punto.Y = 14.85

    puntos.Add(punto);

    label1.text= puntos[0].X.ToString(); }



    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos


    jueves, 11 de abril de 2013 9:58
    Moderador
  • Hola,

    Vendría a ser algo de este estilo:

    puntos.Add(new coordenadas { X = 23.24 });
     
    label1.text= puntos[0].X.Tostring();
    

    Saludos.


    Please remember to Vote & "Mark As Answer" if this post is helpful to you.
    Por favor, recuerda Votar y "Marcar como respuesta" si la solución de esta pregunta te ha sido útil.

    • Marcado como respuesta cutuche jueves, 11 de abril de 2013 10:16
    jueves, 11 de abril de 2013 10:00

Todas las respuestas

  • Pero ahora resulta que no voy a poder tener la precisión que quiero es decri por ejemplo 4445875,567. ya que le pointF se queda en 4445875 e ignora los decimales.

    y porque no creas tu propia clase

    public class Coordenada{

        public double X {get; set;}

        public double Y {get; set;}

    }

    definiendo una lista como ser

    List<Coordenada>

    de esta forma tienes la precision que necesitas y en una lista la puedes usar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    • Editado Leandro TuttiniMVP miércoles, 10 de abril de 2013 17:39
    • Marcado como respuesta cutuche jueves, 11 de abril de 2013 10:15
    miércoles, 10 de abril de 2013 17:39
  • Porque no creas tu propia clase Point, por ejemplo PointD con campos X Y  como doubles??

    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos

    • Marcado como respuesta cutuche jueves, 11 de abril de 2013 10:16
    miércoles, 10 de abril de 2013 17:40
    Moderador
  • Hola,

    Estoy realizando un pequeño programa para ver como funciona esto que me acabais de explicar (crear clase y una lista "dirigida" a dicha clase) y si lo veo factible lo aplico al programa principal

    He creado una clase:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace WindowsFormsApplication1
    {
        class coordenadas
        {
            public double X { get; set; }
            public double Y { get; set; }
        }

    }

     

    Por otro lado tengo esto:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            List<coordenadas> puntos = new List<coordenadas>();
           
            private void button1_Click(object sender, EventArgs e)
            {
               puntos.Add....

               label1.text= puntos.X.Tostring();

     

            }
        }
    }

    Lo que quiero es añadir al double X que tengo dentro de la clase coordenadas el valor Por ejemplo de 23,24.

    Y en el label 1 motrar el resultado.

    ME he quedado en puntos.Add.... No se como se continua.

    ¿Cómo lo puedo hacer?

    Gracias.

    jueves, 11 de abril de 2013 9:52
  • Para añadir un elemento a una lista debes hacer lo siguiente

    private void button1_Click(object sender, EventArgs e) {

    coordenadas punto = new coordenadas();

    punto.X = 23.34

    punto.Y = 14.85

    puntos.Add(punto);

    label1.text= puntos[0].X.ToString(); }



    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos


    jueves, 11 de abril de 2013 9:58
    Moderador
  • Hola,

    Vendría a ser algo de este estilo:

    puntos.Add(new coordenadas { X = 23.24 });
     
    label1.text= puntos[0].X.Tostring();
    

    Saludos.


    Please remember to Vote & "Mark As Answer" if this post is helpful to you.
    Por favor, recuerda Votar y "Marcar como respuesta" si la solución de esta pregunta te ha sido útil.

    • Marcado como respuesta cutuche jueves, 11 de abril de 2013 10:16
    jueves, 11 de abril de 2013 10:00