IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

type de données : km et km/h


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 83
    Par défaut type de données : km et km/h
    Salut ,
    j'aimerai calculer dans mon code le temps qu'un avion fait de l'aeroport A à l'aeropor B connaissant la distance de A à B et la vitesse de l'avion. En realité la distance est en km et la vitesse en km/h, donc je devrais avoir temps en heure. Au depart j'ai pri la distance en "int" et la vitesse aussi en "int" donc temps que je trouve est en "int", pour la suite de mon programme j'ai besoin du temps en "heure". Il y a t-il une correspondace du km et du km/h en c#?

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Bon déjà manipuler des entiers c'est pas super genial pour la précision... Je conseille des float ou des double.
    Ensuite, si tu divises des km par des km/h alors tu auras des heures... Ton entier et donc le nombre d'heures.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 83
    Par défaut
    ca veut dire que le double que j'obtiens je le transforme en DateTime?

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut
    non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new SpanTime(resultat, 0,0);
    0 car tu travaille avec des entiers, donc tu ne semble pas etre à la minute ou seconde pres

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Au depart j'ai pri la distance en "int" et la vitesse aussi en "int" donc temps que je trouve est en "int", pour la suite de mon programme j'ai besoin du temps en "heure".
    J'ai l'impression que tu mélanges 2 concepts... int est un type de données qui représente un nombre entier sur 32 bits. heure est une unité de mesure, pas un type ; il n'y a pas de type particulier pour représenter des heures (bien qu'on pourrait le créer). Dans le code tu représentes le nombre d'heures par un nombre (int, double...), mais ce nombre ne contient pas d'information sur l'unité, c'est à toi de savoir que ce sont des heures.

    A noter que certains langages, comme F#, intègrent le principe des unités ; par exemple si on divise des km par des km/h, on obtient bien des heures... une fonctionnalité que j'aimerais bien avoir en C#

    EDIT: exemple en F# :
    Code F# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [<Measure>] type km
    [<Measure>] type h
     
    let speed = 200.0<km/h>
    let distance = 1500.0<km>
    let time = distance / speed

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    bonjour

    Pour adresser un tel problème, je travaillerais tout en unité SI (système international), donc, pour moi, les vitesses seraient en m/s, les distances en mètres et tous les calculs fait en double ou float.

    Ce n'est que pour la représentation et l'affichage des données que je basculerais dans un affichage plus approprié (Heure/Minute/seconde (si pertinent)..

    En règle général, il est plus "logique" de travailler avec la "plus" petite unité quand on fait des calculs pour avoir un maximum de précision et uniquement à l'affichage, d'arrondir pour rentrer dans les unités usuelles d'affichage.

    Maintenant, c'est ma vision des choses, elle n'est ni unique, ni forcément parfaite.. juste le fruit d'une "intense" réflexion et d'un peu d'expérience

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par tomlev Voir le message
    J
    A noter que certains langages, comme F#, intègrent le principe des unités ; par exemple si on divise des km par des km/h, on obtient bien des heures... une fonctionnalité que j'aimerais bien avoir en C#
    Ben, en C# on peut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MeterPerSecond mps = 100.0;
    Meter distance = 10.0;
    TimeSpan temps = mps / distance;

    Suffit de rajouter un peu de code dans un coin
    :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
      class MeterPerSecond
    {
    	private double _value;
    	public MeterPerSecond(double value)
    	{
    		_value = value;
    	}
    	public static Meter operator /(MeterPerSecond vitesse, TimeSpan time)
    	{
    		return new Meter(vitesse._value / time.TotalSeconds);
    	}
    	public static TimeSpan operator /(MeterPerSecond vitesse, Meter distance)
    	{
    		return new TimeSpan(0, 0, (int)(vitesse._value / distance.Value));
    	}
     
    	public static implicit operator MeterPerSecond(double val)
    	{
    		return new MeterPerSecond(val);
    	}
    	public static implicit operator double(MeterPerSecond val)
    	{
    		return val._value;
    	}
     
    }
     
    class Meter
    {
    	private double _value;
    	public double Value
    	{
    		get { return _value; }
    	}
     
    	public Meter(double value)
    	{
    		_value = value;
    	}
     
    	public static implicit operator Meter(double val)
    	{
    		return new Meter(val);
    	}
    	public static implicit operator double(Meter meters)
    	{
    		return meters.Value;
    	}
    	public static MeterPerSecond operator /(Meter meter, TimeSpan time)
    	{
    		return new MeterPerSecond(meter.Value / time.TotalSeconds);
    	}
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. interbase : types de donnés : AutoIncrement et Date ???
    Par delphien dans le forum Bases de données
    Réponses: 2
    Dernier message: 12/04/2004, 17h29
  2. Type pour données de type email avec @
    Par jeff37 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/01/2004, 14h50
  3. Types de données interbase
    Par Clotilde dans le forum InterBase
    Réponses: 2
    Dernier message: 18/11/2003, 14h10
  4. Réponses: 2
    Dernier message: 22/09/2003, 11h23
  5. Convertir un type de donnée sous SQL Server
    Par Fleep dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/08/2003, 15h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo