Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 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 | | Calendrier |
|
|
| Empêcher la notation scientifique [RESOLU] | |
| | Auteur | Message |
---|
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Empêcher la notation scientifique [RESOLU] Lun 12 Mar 2018 - 15:04 | |
| Bonjour à tous ! Habituellement, la notation scientifique des grands ou petits nombres est très pratique, mais pour une fois, je n'en veux pas... Peut-on empêcher Panoramic d'afficher en forme scientifique ?
Dernière édition par Marc le Dim 18 Mar 2018 - 1:53, édité 1 fois | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 12 Mar 2018 - 15:31 | |
| dim a,b$ a = 0.0008 b$=str$(a)
print b$ end | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Empêcher la notation scientifique [RESOLU] Lun 12 Mar 2018 - 15:59 | |
| Salut Yannick ! Merci de ta réponse. Hélas, ce n'est bon que jusqu'à la 5ème décimale. Mon programme travaille et affiche des nombres de 0 à 999999,999999, donc avec 6 décimales au maximum. Si mon nombre descend en dessous de 0.00001, Panoramic passe en notation scientifique. Il va falloir ruser... pour avoir un affichage décimal. Je vais le tronquer pour l'afficher en 2 fois ! | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Empêcher la notation scientifique [RESOLU] Lun 12 Mar 2018 - 17:50 | |
| Bonjour à tous, Bonjour MARC voici un moyen simple pour récupérer la partie décimale de n'importe quel nombre: - Code:
-
dim a a=0.08 print right_pos$(str$(1+a),2) a=0.00008 print right_pos$(str$(1+a),2) a=0.000008 print right_pos$(str$(1+a),2) a=0.000000008567 print right_pos$(str$(1+a),2)
A + | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 12 Mar 2018 - 18:04 | |
| dim a,b$,s1%,s2%,s3%,f$
font_name 0,"Arial" font_size 0,10 font_bold 0 a = 0.00000000000123566666 b$=str$(a)
if instr(b$,"-")>0 s1%=instr(b$,".") s2%=instr(b$,"E") s3%=instr(b$,"-") f$=mid$(b$,s1%+1,s2%-1-s1%) b$="0."+string$(val(right$(b$,len(b$)-s3%))-1,"0")+str$(val(left$(b$,instr(b$,"E")-1))*power(10,len(f$))) print b$ else print b$ end_if
end | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Empêcher la notation scientifique [RESOLU] Lun 12 Mar 2018 - 18:15 | |
| Tu peux "tricher": crée une fonction retournant le nombre fromaté. Comme ceci: - Code:
-
dim v, s$
font_size 0,16 v = 0 v = 0.00008 s$ = format$(v,8) print s$ end
fnc format$(valeur,ndec%) dim_local s$, r$, p% s$ = str$(valeur*1000) if instr(s$,".")=0 then s$ = s$ + ".0" s$ = "0000000" + s$ + "0000000" p% = instr(s$,".") r$ = left$(s$,p%-4)+"."+mid$(s$,p%-3,3)+mid$(s$,p%+1,len(s$)) p% = instr(r$,".") result left$(r$,p%+8) end_fnc
La fonction retourne le nombre de décimales voulues. | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Empêcher la notation scientifique [RESOLU] Lun 12 Mar 2018 - 20:04 | |
| Merci à tous de vos réponses !
Vos idées sont toutes bonnes.
Il me reste à passer à la pratique et choisir une de vos trois propositions.
Encore merci et bonne continuation à tous !
A bientôt !
| |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Empêcher la notation scientifique [RESOLU] Mar 13 Mar 2018 - 1:39 | |
| Vous pouvez utiliser une DLL pour formater la sortie d’un nombre comme le faisait PRINT USING du basic de jadis. Sur mon webdav, vous trouvez MesDLL.zip qui contient deux dossiers : Trigo et Format. Ce qui nous intéresse ici est Format qui contient : format.dll la DLL à utiliser pour formater un nombre. testFormat.bas un code PANORAMIC montrant comment utiliser la DLL Format_FreeBasic.txt le code source de la DLL en free Basic (de Jean_Debord, je pense) @Klaus Si tu veux bien ajouter Format.dll à l’incontournable KGF.DLL, ça sera plus pratique. Voici le code de FORMAT.DLL (en free basic) - Code:
-
#include "vbcompat.bi"
extern "Windows-MS"
function print_format(byref x as double, byref format_str as zstring ptr, byref x_str as zstring ptr) as integer export dim as integer p dim as string s ' Convertir le nombre x en chaine de caracteres s = format(x, *format_str) ' Chercher si la chaine contient une virgule p = instr(s, ",") ' Si oui, la remplacer par un point if p > 0 then mid(s, p) = "." ' Retourner la chaine *x_str = s return 0 end function
end extern
A compiler comme ceci : - Code:
-
fbc format.bas –dll
Voici un exemple en Panoramic pour utiliser FORMAT.DLL - Code:
-
rem ============================================================================ rem Test de FORMAT.DLL rem ============================================================================ rem FORMAT.DLL exporte une fonction et une seule pour formater un nombre comme rem le faisait PRINT USING du BASIC ancien rem L’appel de la fonction se fait comme suit : rem _________________________________________________________________________ rem | | rem | ret% = dll_call3("print_format", adr(nombre), adr(format$), adr(xstr$)) | rem |_________________________________________________________________________|
rem nombre est le nombre à formater rem format$ est la chaine de caractères décrivant le format : voir les exemples rem ci-après : rem Le résultat de la fonction est retourné dans la variable xstr$ qui doit être rem initialisée avant l’appel comme ceci : xstr$ = format$ rem ============================================================================ rem Dans la chaine format$ : rem un zéro (0) indique la position d’un chiffre rem un point indique la position du point décimal rem une virgule indique la position d’un espace (voir l’exemple Tunisian Dinar) rem un espace donne un espace (utile pour alligner des sorties) rem autre caractère (comme une étoile en début) donne ce même caratère) rem un symbole monétaire (ou un texte) à la fin du FORMAT s’affiche comme tel rem ============================================================================ rem Exemples de FORMAT$ rem rem format$ = "***000 000.000 $" rem format$ = "***000000.000***" rem format$ = "*** 000 000.000 £" rem format$ = "*** 000 000.000 Dollars" rem format$ = "000 000 000.000" rem format$ = "+++ 000 000.000 +++" rem ============================================================================
dim nombre,format$,i font_bold 0 for i = 1 to 10 nombre = rnd(1)/1000000 : format$ = "0.0000000000" print nombre ; " = " + Format_Nombre$(nombre,format$) next i print : print nombre = 0.0000008 : format$ = "0.0000000" print nombre ; " = " + Format_Nombre$(nombre,format$) print : print nombre = 123456.789 : format$ = "*** 000,000.000 TD" : ' <--- Tunisian Dinar print nombre ; " = " + Format_Nombre$(nombre,format$)
print : print nombre = 12345678.99 : format$ = " 00 000 000.00 €" print nombre ; " = " + Format_Nombre$(nombre,format$)
print : print nombre = 12345678.99 : format$ = " 00 000 000.00 $" print nombre ; " = " + Format_Nombre$(nombre,format$)
END rem ============================================================================ ' Définition de la fonction Format_Nombre$() FNC Format_Nombre$(nombre,format$) dim_local ret%,xstr$ dll_on "format.dll" xstr$ = format$ : ' initialisation de la chaine du résultat de la fonction ret% = dll_call3("print_format", adr(nombre), adr(format$), adr(xstr$)) result xstr$ dll_off END_FNC rem ============================================================================
- Et voici ce que ça donne:
Vous pouvez revivre cette intéressante histoire en cliquant sur ce lien Post édité à 10:28 pour correction d'une erreur | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Empêcher la notation scientifique [RESOLU] Mer 14 Mar 2018 - 11:19 | |
| Merci Papydall !
Merci pour ces renseignements qui sont précieux !
Bonne journée ! | |
| | | Contenu sponsorisé
| Sujet: Re: Empêcher la notation scientifique [RESOLU] | |
| |
| | | | Empêcher la notation scientifique [RESOLU] | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |