Le langage SMS est exclu sur les forums ProgBoards, tout message ne respectant pas la charte sera déplacé, modifié, ou supprimé par nos modérateurs.

Forum Langages » BASIC » nombres décimaux en qb4.5

diemaker form
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 10/02/2008 à 14:59
Merci Francesco,
Je suis novice en qb4.5,
peut-on copier et coller dans qb ?
ou met-on la fonction ?
Gère t-elle plusieurs variables a$ b$ etc... ?
les valeurs négatives restent bien négatives ?
le programme que je fais sert a piloter une table traçante via une CNC
mon but est de convertir un fichier dessin (texte) en fichier iso de commande numérique, c'est pour cela que les espaces sont interdits et que la commande
n'interprète les valeurs -.7888888 mais -0.79
pour infos, j'ai fais un autre post sur le forum : réorganisation de vecteurs CNC
Désolé d'être aussi compliqué,
Merci
DMF
Formes de Découpe, Outils Coupants pour l'imprimerie sur http://www.diemakerform.fr
diemaker form
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 10/02/2008 à 15:25
Francesco ou une personne qui veux bien m'aider, bonjour,
La fonction de Francesco ne fonctionne pas dans le cas ou ma variable est négative c$ ="-.78888" avec la function chaine$=chaine$+"0" ou plutot chaine$="0"+chaine$
me renvoie "0-.78888" (pas bon !)
je souhaite avoir "-0.79" pour la valeur " -.78888"
merci
DMF (triste)
Formes de Découpe, Outils Coupants pour l'imprimerie sur http://www.diemakerform.fr
Francesco
Modérateur
RemonterCiter Linux Firefox 2 - Posté le 10/02/2008 à 15:32
Hmm, as tu changé la ligne chaine$=chaine$+"0" en chaine$="0"+chaine$ ?
Si oui, ton résultat est normal.

Chez moi, lorsque je teste le code que je t'ai donné, avec -.78888 cela me donne bien -0.78888

[edit]
Combien de chiffre après la virgule te faut-il ? 2 ?
[/edit]

Edité par Francesco ( 10/02/2008 15:33:42 )
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
diemaker form
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 10/02/2008 à 16:19
il me faut 2 chiffres après la virgule, mais je ne sais pas comment appliquer ta FUNCTION ni ou la mettre dans mon programme et si elle va s'appliquer à plusieurs variable, si non, comment appliquer a un nombre de variables sans avoir à tout retaper par variable.
je peux t'envoyer par mail mon prog.bas + le fichier texte de départ + le fichier texte que je souhaite àprès conversion.
pour en revenir à ta FUNCTION, je n'ai utilisé que de ta ligne 18 à 20 en mettant c$ à la place de chaine$
merci.

(neutre)
Formes de Découpe, Outils Coupants pour l'imprimerie sur http://www.diemakerform.fr
Francesco
Modérateur
RemonterCiter Linux Firefox 2 - Posté le 10/02/2008 à 16:29
Je pense qu'avant toute chose, tu devrais lire quelques cours sur QBasic, pour apprendre à bien manipuler les concepts de bases : fonctions, tableau, structures, controle de flux.

Après une rapide recherche sur Google, j'ai trouvé ça : http://www.cybwarrior.com/FR/articles/commentaires/QBasic-Introduction-au-QBasic.html
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
diemaker form
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 10/02/2008 à 18:34
Trouvé !!
mais je dois le faire pour chaque variable (j'en es 12)
Je soumet :
c# = -.78888
IF c# < 0 THEN c$ = STR$(-c$ = LTRIM$(RTRIM$(c$))
IF LEFT$(c$, 1) = "." THEN c$ = "-0" + c$ = STR$(c#)
: c$ = LTRIM$(RTRIM$(c$))
PRINT c$

Sortie : -0.78888

Mais le masque me met en l'air cette formule
et me retourne : -.78888 (j'ai les nerfs !)

Si quelqu'un a une formule pour faire un ARRONDI avec 2 chiffres après la virgule, je n'aurais plus besoin de masque.
encore et toujours merci
DMF
Formes de Découpe, Outils Coupants pour l'imprimerie sur http://www.diemakerform.fr
SFLPMEA
ProgBoarder
RemonterCiter Windows 98 Firefox 2 - Posté le 10/02/2008 à 20:40
(héhé Salutations.

Si tu veux avoir des renseignements sur les arrondis, consulte :

http://www.progboards.com/sujet-354.php

"Round Off number : Arrondissement" en date du 2005-05-07 à 19:39:01

Pour les valeurs positives : N.Arondi# = INT(N# * 10 ^ Nd% + .5) / 10 ^ Nd%
A adapter pour les négatives.

(héhé Salutations.
Moi, mon ordinateur, je l'ai baptisé "Billy" ...
En remerciement, je reçois beaucoup de pages bleues !
Freem
Modérateur
RemonterCiter Windows XP Firefox 2 - Posté le 11/02/2008 à 10:19
Sinon, tu peux multiplier ton nombre par 100, ne garder que la partie entière, puis le diviser par 100.
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. - Benjamin Franklin
SFLPMEA
ProgBoarder
RemonterCiter Windows 98 Firefox 2 - Posté le 11/02/2008 à 10:56
(héhé Salutations.

diemaker form, ton problème m'intriguait et, bien que je n'aurai jamais à m'en servir, j'ai poursuivi son étude. Que penses-tu de cette nouvelle façon de procéder ?

CLS : DEFSTR A-Z
DIM v(20) AS STRING * 10
DIM A AS STRING * 10
DATA "AZ","ER","-300.888","300.25","-300.996","F1","-2.226","QW","1.1","-1.11"
DATA "SF","LPMEA","-400.899", "258.60","X","2","-2"
FOR I% = 1 TO 17
READ v(I%)
NEXT I%
RESULTAT = ""
FOR I% = 1 TO 17
CLS
X = v(I%)
IF VAL(X) <> 0 THEN
Virg% = INSTR(X, ".")
IF Virg% = 0 THEN X = RTRIM$(X) + ".00": PRINT X
IF Virg% = (LEN(X) - 1) THEN X = RTRIM$(X) + "0": PRINT X
END IF
GOSUB ANALYSE
RESULTAT = RESULTAT + B
NEXT I%
FOR I% = 1 TO 17: PRINT RTRIM$(v(I%)) + "*"; : NEXT: PRINT
PRINT RESULTAT
END
ANALYSE:
COLOR 15: PRINT X: PRINT VAL(X)
X = RTRIM$(X) + "00": COLOR 11: PRINT X
SELECT CASE VAL(X)

CASE IS < 0:
X# = VAL(X): PRINT X#
X# = ABS(X#): PRINT X#
X# = X# * 100: PRINT X#
X# = X# + .5: PRINT X#
X# = INT(X#) / 100: PRINT X#
X# = -X#: PRINT X#
A = STR$(X#): PRINT A
B = RTRIM$(A): PRINT B
Virg% = INSTR(B, ".")
IF Virg% = 0 THEN B = B + ".00": PRINT B
IF Virg% = (LEN(B) - 1) THEN B = B + "0": PRINT B

CASE 0:
B = LEFT$(X, LEN(X) - 2): PRINT B

CASE IS > 0:
X# = VAL(X): COLOR 14: PRINT X#
X# = INT(X# * 100 + .5): PRINT X#
X# = X# / 100: PRINT X#
A = STR$(X#): PRINT A
B = LTRIM$(RTRIM$(A)): PRINT B
Virg% = INSTR(B, ".")
IF Virg% = 0 THEN B = B + ".00": PRINT B
IF Virg% = (LEN(B) - 1) THEN B = B + "0": PRINT B

END SELECT
SLEEP 2
RETURN

Tu peux mettre les datas numériques avec ou sans décimales, les alphabétiques doivent impérativement être seuls entre leurs guillemets. J'ai prévu, dans tous les cas, des arrondis avec 2 décimales. Le programme présente quelques petits défauts, mais le résultat obtenu me semble correct. A tester.
Est-ce ce que tu désires obtenir ? Pour faciliter la compréhension des opérations, j'ai détaillé au maximum. Peut-être même plus qu'il n'était nécessaire, mais je voulais que tu puisses suivre aisément.

Nous tenir au courant.

(héhé Salutations.
Moi, mon ordinateur, je l'ai baptisé "Billy" ...
En remerciement, je reçois beaucoup de pages bleues !
diemaker form
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 12/02/2008 à 18:19
Bonjour à tous,
et merci pour avoir pris le temps d'étudier mon problème !
J'ai utilisé la FUNCTION Convert$(Nombre$) de Francesco qui fonctionne
mieux que ma bidouille,
mais le prog à Sflpmea est intérressant, et ressemble un peu à l'info de Freem
(si j'ai bien compris !)
La partie qui me pose problème est que je souhaite 2 chiffres après la virgule impérativement : 12.2 => 12.20 12 => 12.00 car ces valeurs servent à la compréhension d'une commande numérique.
J'aimerai partir de la FUNCTION de Francesco ou un code simple,
D'avance merci !
DMF (sourire)
Formes de Découpe, Outils Coupants pour l'imprimerie sur http://www.diemakerform.fr

Poster une réponse

STOP aux fautes volontaires !
Message
Formatage
Note: pour partager du code source, merci d'utiliser le wall !
Smileys (sourire) (yekyek) (clein d'oeil) (désapprouve) (triste) (cool) (langue) (confus) (gêné) (neutre) (eek) (surpris) (diable) (flèche) (exclamation) (question) (diable) (idée) (méchant)
Pseudonyme
Recopiez le code
v6 © Computaid SPRL 2005-2008 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,069 s - Crédits - Stats
1 connecté