Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Bruno Jouhier [MVP]
"LEBRUN Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de news:
Essaye un :
int Jrs = Convert.ToInt32(nbJour.TotalDays / 365.25);
sinon, une solution moins propres serait de rechercher la virgule, dans ton nombre, et d'extraire la chaine allant du départ jusqu'a la position de la virgue - 1
Ca ne donne pas le même résultat. Ca tronque au lieu d'arrondir. Si on part de 3.6, Convert.ToInt32 donne 4 alors qu'on obtient 3 en tronquant.
Il y a un moyen plus rapide de tronquer: le cast: (int)3.6 --> 3
Enfin, dernier conseil avec les doubles: il est très difficile de contrôler leur représentation en décimales, il faut systématiquement faire un arrondi si on veut éviter d'obtenir des 3,599999......7 ou des 3,6000...003 en fin de calcul. Pour éviter ça, il y a le type decimal qui contrairement à double est capable de représenter **exactement** les nombres décimaux dans une plage de valeur et précision suffisante pour la plupart des applications (le type double n'a pas de représentation exacte d'un nombre aussi simple que 0.1, il représente exactement les fractions binaires mais pas la plupart des fractions décimales!)
Bruno.
A+
------------------- LEBRUN Thomas http://morpheus.developpez.com
"Johan Coffigniez" wrote:
Bonjour, Je débute en csharp et je bloque sur les formats int double ...
J'essaie de récupérer l'age de quelqu'un en faisant l'opération entre la date qu'il indique dans le calendrier et la date actuelle.
J'obtiens une réponse à rallonge du type: Jrs = 15,0002333555
Je n'arrive pas a avoir une réponse simpe du type int comme 15
Merci d'avance
johan
"LEBRUN Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de
news: 9761C9D7-CD91-468C-B0DB-0C3FCFD71E4A@microsoft.com...
Essaye un :
int Jrs = Convert.ToInt32(nbJour.TotalDays / 365.25);
sinon, une solution moins propres serait de rechercher la virgule, dans
ton
nombre, et d'extraire la chaine allant du départ jusqu'a la position de la
virgue - 1
Ca ne donne pas le même résultat. Ca tronque au lieu d'arrondir.
Si on part de 3.6, Convert.ToInt32 donne 4 alors qu'on obtient 3 en
tronquant.
Il y a un moyen plus rapide de tronquer: le cast:
(int)3.6 --> 3
Enfin, dernier conseil avec les doubles: il est très difficile de contrôler
leur représentation en décimales, il faut systématiquement faire un arrondi
si on veut éviter d'obtenir des 3,599999......7 ou des 3,6000...003 en fin
de calcul. Pour éviter ça, il y a le type decimal qui contrairement à double
est capable de représenter **exactement** les nombres décimaux dans une
plage de valeur et précision suffisante pour la plupart des applications (le
type double n'a pas de représentation exacte d'un nombre aussi simple que
0.1, il représente exactement les fractions binaires mais pas la plupart des
fractions décimales!)
Bruno.
A+
-------------------
LEBRUN Thomas
http://morpheus.developpez.com
"Johan Coffigniez" wrote:
Bonjour,
Je débute en csharp et je bloque sur les formats int double ...
J'essaie de récupérer l'age de quelqu'un en faisant l'opération entre la
date qu'il indique dans le calendrier et la date actuelle.
"LEBRUN Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de news:
Essaye un :
int Jrs = Convert.ToInt32(nbJour.TotalDays / 365.25);
sinon, une solution moins propres serait de rechercher la virgule, dans ton nombre, et d'extraire la chaine allant du départ jusqu'a la position de la virgue - 1
Ca ne donne pas le même résultat. Ca tronque au lieu d'arrondir. Si on part de 3.6, Convert.ToInt32 donne 4 alors qu'on obtient 3 en tronquant.
Il y a un moyen plus rapide de tronquer: le cast: (int)3.6 --> 3
Enfin, dernier conseil avec les doubles: il est très difficile de contrôler leur représentation en décimales, il faut systématiquement faire un arrondi si on veut éviter d'obtenir des 3,599999......7 ou des 3,6000...003 en fin de calcul. Pour éviter ça, il y a le type decimal qui contrairement à double est capable de représenter **exactement** les nombres décimaux dans une plage de valeur et précision suffisante pour la plupart des applications (le type double n'a pas de représentation exacte d'un nombre aussi simple que 0.1, il représente exactement les fractions binaires mais pas la plupart des fractions décimales!)
Bruno.
A+
------------------- LEBRUN Thomas http://morpheus.developpez.com
"Johan Coffigniez" wrote:
Bonjour, Je débute en csharp et je bloque sur les formats int double ...
J'essaie de récupérer l'age de quelqu'un en faisant l'opération entre la date qu'il indique dans le calendrier et la date actuelle.
J'obtiens une réponse à rallonge du type: Jrs = 15,0002333555
Je n'arrive pas a avoir une réponse simpe du type int comme 15
Merci d'avance
johan
Johan
Oui en effet, je viens de m'apercevoir du tronquage. Je suis plus vieux d'1 an , dés les 6 premiers mois de l'année sont passés. Sur que cela pourrait vexer certaines personnes ;)
Merci voila une soirée productive en enseignement ! Thx
Johan
"Bruno Jouhier [MVP]" wrote:
"LEBRUN Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de news: > Essaye un : > > int Jrs = Convert.ToInt32(nbJour.TotalDays / 365.25); > > sinon, une solution moins propres serait de rechercher la virgule, dans > ton > nombre, et d'extraire la chaine allant du départ jusqu'a la position de la > virgue - 1
Ca ne donne pas le même résultat. Ca tronque au lieu d'arrondir. Si on part de 3.6, Convert.ToInt32 donne 4 alors qu'on obtient 3 en tronquant.
Il y a un moyen plus rapide de tronquer: le cast: (int)3.6 --> 3
Enfin, dernier conseil avec les doubles: il est très difficile de contrôler leur représentation en décimales, il faut systématiquement faire un arrondi si on veut éviter d'obtenir des 3,599999......7 ou des 3,6000...003 en fin de calcul. Pour éviter ça, il y a le type decimal qui contrairement à double est capable de représenter **exactement** les nombres décimaux dans une plage de valeur et précision suffisante pour la plupart des applications (le type double n'a pas de représentation exacte d'un nombre aussi simple que 0.1, il représente exactement les fractions binaires mais pas la plupart des fractions décimales!)
Bruno.
> > A+ > > ------------------- > LEBRUN Thomas > http://morpheus.developpez.com > > > "Johan Coffigniez" wrote: > >> Bonjour, >> Je débute en csharp et je bloque sur les formats int double ... >> >> J'essaie de récupérer l'age de quelqu'un en faisant l'opération entre la >> date qu'il indique dans le calendrier et la date actuelle. >> >> nbJour = DateTime.Now - monthCalendar1.SelectionRange.Start; >> double Jrs = nbJour.TotalDays / 365.25; >> >> J'obtiens une réponse à rallonge du type: Jrs = 15,0002333555 >> >> Je n'arrive pas a avoir une réponse simpe du type int comme 15 >> >> >> Merci d'avance >> >> johan >> >> >>
Oui en effet, je viens de m'apercevoir du tronquage. Je suis plus vieux d'1
an , dés les 6 premiers mois de l'année sont passés. Sur que cela pourrait
vexer certaines personnes ;)
Merci voila une soirée productive en enseignement !
Thx
Johan
"Bruno Jouhier [MVP]" wrote:
"LEBRUN Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de
news: 9761C9D7-CD91-468C-B0DB-0C3FCFD71E4A@microsoft.com...
> Essaye un :
>
> int Jrs = Convert.ToInt32(nbJour.TotalDays / 365.25);
>
> sinon, une solution moins propres serait de rechercher la virgule, dans
> ton
> nombre, et d'extraire la chaine allant du départ jusqu'a la position de la
> virgue - 1
Ca ne donne pas le même résultat. Ca tronque au lieu d'arrondir.
Si on part de 3.6, Convert.ToInt32 donne 4 alors qu'on obtient 3 en
tronquant.
Il y a un moyen plus rapide de tronquer: le cast:
(int)3.6 --> 3
Enfin, dernier conseil avec les doubles: il est très difficile de contrôler
leur représentation en décimales, il faut systématiquement faire un arrondi
si on veut éviter d'obtenir des 3,599999......7 ou des 3,6000...003 en fin
de calcul. Pour éviter ça, il y a le type decimal qui contrairement à double
est capable de représenter **exactement** les nombres décimaux dans une
plage de valeur et précision suffisante pour la plupart des applications (le
type double n'a pas de représentation exacte d'un nombre aussi simple que
0.1, il représente exactement les fractions binaires mais pas la plupart des
fractions décimales!)
Bruno.
>
> A+
>
> -------------------
> LEBRUN Thomas
> http://morpheus.developpez.com
>
>
> "Johan Coffigniez" wrote:
>
>> Bonjour,
>> Je débute en csharp et je bloque sur les formats int double ...
>>
>> J'essaie de récupérer l'age de quelqu'un en faisant l'opération entre la
>> date qu'il indique dans le calendrier et la date actuelle.
>>
>> nbJour = DateTime.Now - monthCalendar1.SelectionRange.Start;
>> double Jrs = nbJour.TotalDays / 365.25;
>>
>> J'obtiens une réponse à rallonge du type: Jrs = 15,0002333555
>>
>> Je n'arrive pas a avoir une réponse simpe du type int comme 15
>>
>>
>> Merci d'avance
>>
>> johan
>>
>>
>>
Oui en effet, je viens de m'apercevoir du tronquage. Je suis plus vieux d'1 an , dés les 6 premiers mois de l'année sont passés. Sur que cela pourrait vexer certaines personnes ;)
Merci voila une soirée productive en enseignement ! Thx
Johan
"Bruno Jouhier [MVP]" wrote:
"LEBRUN Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de news: > Essaye un : > > int Jrs = Convert.ToInt32(nbJour.TotalDays / 365.25); > > sinon, une solution moins propres serait de rechercher la virgule, dans > ton > nombre, et d'extraire la chaine allant du départ jusqu'a la position de la > virgue - 1
Ca ne donne pas le même résultat. Ca tronque au lieu d'arrondir. Si on part de 3.6, Convert.ToInt32 donne 4 alors qu'on obtient 3 en tronquant.
Il y a un moyen plus rapide de tronquer: le cast: (int)3.6 --> 3
Enfin, dernier conseil avec les doubles: il est très difficile de contrôler leur représentation en décimales, il faut systématiquement faire un arrondi si on veut éviter d'obtenir des 3,599999......7 ou des 3,6000...003 en fin de calcul. Pour éviter ça, il y a le type decimal qui contrairement à double est capable de représenter **exactement** les nombres décimaux dans une plage de valeur et précision suffisante pour la plupart des applications (le type double n'a pas de représentation exacte d'un nombre aussi simple que 0.1, il représente exactement les fractions binaires mais pas la plupart des fractions décimales!)
Bruno.
> > A+ > > ------------------- > LEBRUN Thomas > http://morpheus.developpez.com > > > "Johan Coffigniez" wrote: > >> Bonjour, >> Je débute en csharp et je bloque sur les formats int double ... >> >> J'essaie de récupérer l'age de quelqu'un en faisant l'opération entre la >> date qu'il indique dans le calendrier et la date actuelle. >> >> nbJour = DateTime.Now - monthCalendar1.SelectionRange.Start; >> double Jrs = nbJour.TotalDays / 365.25; >> >> J'obtiens une réponse à rallonge du type: Jrs = 15,0002333555 >> >> Je n'arrive pas a avoir une réponse simpe du type int comme 15 >> >> >> Merci d'avance >> >> johan >> >> >>