FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Biomorphe de Pickover
par papydall Aujourd'hui à 0:49

» PanExpress : l'éditeur Panoramic avec création d'objet
par Minibug Dim 23 Sep 2018 - 22:14

» Planétarium virtuel.
par Pedro Alvarez Dim 23 Sep 2018 - 19:50

» Virus/Antivirus
par JL35 Dim 23 Sep 2018 - 10:55

» Calculatrice
par papydall Ven 21 Sep 2018 - 22:45

» Orbites de l’ensemble de Mandelbrot
par Minibug Ven 21 Sep 2018 - 21:32

» Demande pour Jack concernant PanExpress
par Minibug Ven 21 Sep 2018 - 11:04

» EPP_V01 éditeur pour Panoramic
par Minibug Mer 19 Sep 2018 - 21:03

» [RESOLU] Quelle ligne est sélectionnée dans SYNEDIT ?
par Jean Claude Mer 19 Sep 2018 - 21:02

» Petit coucou en passant !
par Minibug Dim 16 Sep 2018 - 15:03

» bug SEVERE fnc+sub : variables globales corrompus
par silverman Dim 16 Sep 2018 - 13:38

» Verrouiller un form en avant plan
par silverman Dim 16 Sep 2018 - 12:50

» Fin de l'aventure.
par Pedro Alvarez Sam 15 Sep 2018 - 18:16

» Demande d'explications Sur File_Write & File_writeln
par Jack Sam 15 Sep 2018 - 17:26

» MEMO avec des possibilités de commande
par Oscaribout Mer 12 Sep 2018 - 1:06

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Septembre 2018
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
CalendrierCalendrier

Partagez | 
 

 Empêcher la notation scientifique [RESOLU]

Aller en bas 
AuteurMessage
Marc

avatar

Nombre de messages : 869
Age : 57
Localisation : TOURS
Date d'inscription : 17/03/2014

MessageSujet: 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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8083
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 12 Mar 2018 - 15:31

dim a,b$
a = 0.0008
b$=str$(a)

print b$
end
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marc

avatar

Nombre de messages : 869
Age : 57
Localisation : TOURS
Date d'inscription : 17/03/2014

MessageSujet: 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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
bignono

avatar

Nombre de messages : 1127
Age : 61
Localisation : Val de Marne
Date d'inscription : 13/11/2011

MessageSujet: Re: Empêcher la notation scientifique [RESOLU]   Lun 12 Mar 2018 - 17:50

Bonjour à tous, Smile
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 + Wink Wink Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8083
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: 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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Marc

avatar

Nombre de messages : 869
Age : 57
Localisation : TOURS
Date d'inscription : 17/03/2014

MessageSujet: 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 !





Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 6001
Age : 68
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: 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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/ En ligne
Marc

avatar

Nombre de messages : 869
Age : 57
Localisation : TOURS
Date d'inscription : 17/03/2014

MessageSujet: 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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Empêcher la notation scientifique [RESOLU]   

Revenir en haut Aller en bas
 
Empêcher la notation scientifique [RESOLU]
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Empêcher un train de partir en marche arrière
» Je cherche pour une amie, un Divan pas cher (vendre ou donner) et aussi, une mini-laveuse portative !
» Roll-over (Resolu)
» Je viens de perdre un être cher.....
» Un Garmin pas cher

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: