| Une astuce qui pourrait servir ! | |
|
|
Auteur | Message |
---|
papydall
Nombre de messages : 6996 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Une astuce qui pourrait servir ! Mar 21 Mai 2013 - 3:05 | |
| Salut tout le monde Question :Comment déterminer le nombre de chiffres d’un nombre quelconque ? (par exemple N = 123456789) Probablement, vous répondez : - Code:
-
dim n n = 123456789 print len(str$(n))
Parfait, ce code affiche bien : 9 qui est la bonne réponse. Maintenant, essayez ceci : - Code:
-
dim n n = 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 print len str$(n)
Vous vous attendiez à ce que ce code affiche 99 (c’est le nombre des chiffres de N, faites le compte si vous en doutez). Hé bien, exécutez pour voir. Le résultat est .... (tenez-vous bien) 19 !!! Surtout ne criez pas au BUG ! CAR CE N’EST PAS UN BUG. En effet, PANORAMIC transforme ce nombre (qui est trop long) en une notation de puissance de dix : 1.23456789012346E98 qui (sous cette forme) comporte évidemment 19 caractères ! La solution alors ? On va utiliser une astuce mathématique qui fonctionne avec tous les nombres : Pour connaître le nombre de chiffres d’un nombre N, on prend la partie entière du logarithme décimal de ce nombre, à laquelle on ajoute 1Exemple : - Code:
-
dim n,c n = 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 c = int(log10(n))+1 print " Ce nombre comporte ";c;" chiffres"
Ça marche avec n’importe quel nombre > 0La fonction logarithme n'est pas définie pour les nombres <= 0. | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Une astuce qui pourrait servir ! Mar 21 Mai 2013 - 7:09 | |
| | |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une astuce qui pourrait servir ! Mar 21 Mai 2013 - 9:49 | |
| Trop fort papydall... je vais m'en servir tout le temps pour compter mes sous. | |
|
| |
Francis-mr
Nombre de messages : 185 Date d'inscription : 26/11/2012
| Sujet: Re: Une astuce qui pourrait servir ! Mar 21 Mai 2013 - 10:19 | |
| Bonjour N'est-il pas plus simple d'utiliser une variable string$ ? Car ça fonctionne aussi. - Code:
-
dim n$ n$ = 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 print len(n$) | |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une astuce qui pourrait servir ! Mar 21 Mai 2013 - 10:44 | |
| Oui, mais justement c'est là que le bât blesse et ce que montre papydall, on ne peut pas passer du grand nombre à la string. Si par exemple ce grand nombre est le résultat d'un calcul ? | |
|
| |
mindstorm
Nombre de messages : 684 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: Une astuce qui pourrait servir ! Mar 21 Mai 2013 - 12:26 | |
| Bonjour a tous papydall se mets 10E98 fois en string!!!!! je crois ne pas avoir bien compris? Enfin si il ne s ennuie plus plus serieusement il nous fait prendre consience de la necessit.ee d etre vigilant dans nos formules. Mindstorm | |
|
| |
papydall
Nombre de messages : 6996 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Une astuce qui pourrait servir ! Mar 21 Mai 2013 - 12:49 | |
| @Francis mr Bien sûr un string fait l’affaire ; mais comment passer du nombre à ce string ? Par hypothèse, on part d’un nombre n = .... dont on ne connait pas d’avance la valeur. Or STR$(n) ne convient pas comme dit dans mon 1er post. - Code:
-
dim n n = power(10,20) print len(str$(n)) : ' donne 4 parce que N est transformé en 1E20 print int(log10(n))+1 : ' donne 21 qui est bien le nombre des chiffres de N
@JL35 Pour compter tes sous, tu ferais mieux de me les envoyer et tu recevras en retour le bon compte ! Cette astuce qui ne sert pas tout le temps à compter ses sous, n’est, en fait, qu’une façon de répondre à une question inutile : comment connaitre le nombre de chiffre d’un nombre de plusieurs chiffres ? Si vous avez une autre solution, je suis preneur. | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Une astuce qui pourrait servir ! Mar 21 Mai 2013 - 13:04 | |
| Il est malin le Papydall, il te renvois le compte et pas les sous ... malin .... | |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une astuce qui pourrait servir ! Mar 21 Mai 2013 - 13:38 | |
| @papydall, merci, c'est gentil de ta part et j'apprécie ta proposition à sa juste valeur, mais je ne veux pas t'ennuyer avec mes petits problèmes domestiques | |
|
| |
papydall
Nombre de messages : 6996 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Une astuce qui pourrait servir ! Mar 21 Mai 2013 - 17:17 | |
| Il n’y a pas de quoi JL35. J’ai voulu te rendre service dans le cas où tu ne savais pas comment calculer (en PANORAMIC) le nombre des chiffres du montant total de tes sous. Alors, garde tes sous : tu as la formule magique pour faire le calcul ! | |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une astuce qui pourrait servir ! Mar 21 Mai 2013 - 17:37 | |
| Je n'ai jamais douté que ça partait d'un bon sentiment, en tout cas, merci pour la formule qui va bien m'occuper pour mes longues soirées d'hiver (l'hiver dernier, qui ici n'est pas encore terminé). Allez, entre nous tu peux m'appeler JL tout court | |
|
| |
papydall
Nombre de messages : 6996 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Une astuce qui pourrait servir ! Mar 21 Mai 2013 - 17:45 | |
| Ok JL tout court On n'a jamais vu un hiver pareil depuis l'été dernier ! | |
|
| |
Contenu sponsorisé
| Sujet: Re: Une astuce qui pourrait servir ! | |
| |
|
| |
| Une astuce qui pourrait servir ! | |
|