Convertir un nombre avec décimal
Répondre à la discussion
Affichage des résultats 1 à 27 sur 27

Convertir un nombre avec décimal



  1. #1
    electrique10

    Convertir un nombre avec décimal


    ------

    Bonjour
    j'ai un fichier txt qui contient juste un nombre soit 12 si c'est un nombre entier ou 12,3 si c'est avec une décimal
    je cherche a convertir le nombre avec 2 décimal
    par exemple dans mon fichier txt il y a 12 j'aurais souhaiter obtenir 12,00
    ou 12,3 j'aurais souhaiter obtenir 12,30
    existe t-il une fonction en batch ou autre pour convertir le fichier txt et obtenir ainsi le nombre avec 2 décimal ?
    Je vous remercie par avance

    -----

  2. #2
    albanxiii
    Modérateur

    Re : Convertir un nombre avec décimal

    Bonjour,

    Si le C est acceptable, vous pouvez vous en sortir avec les fonctions atof et printf (avec le bon format pour cette dernière, quelque chose comme "%.2f").

    @+
    Not only is it not right, it's not even wrong!

  3. #3
    cherbe

    Re : Convertir un nombre avec décimal

    Citation Envoyé par electrique10 Voir le message
    Bonjour
    j'ai un fichier txt qui contient juste un nombre soit 12 si c'est un nombre entier ou 12,3 si c'est avec une décimal
    je cherche a convertir le nombre avec 2 décimal
    par exemple dans mon fichier txt il y a 12 j'aurais souhaiter obtenir 12,00
    ou 12,3 j'aurais souhaiter obtenir 12,30
    existe t-il une fonction en batch ou autre pour convertir le fichier txt et obtenir ainsi le nombre avec 2 décimal ?
    Je vous remercie par avance
    bonsoir
    En prenant ton message au pied de la lettre, il n'y a aucun calcul puisque la valeur existe dans le fichier.
    donc, tu peux traiter ça comme une chaine de caractères avec un test qui recherche la présence du séparateur décimal.
    Si il est présent, tu ajoute un zéro à la chaine ;
    si il est absent, tu ajoute ,00.

    En VBA :
    if InStr(valeur,',')=1 then 'si valeur contient le caractère virgule
    valeur=valeur.'0')
    else
    valeur=valeur.',00')
    end if

  4. #4
    electrique10

    Re : Convertir un nombre avec décimal

    Effectivement il y a aucun calcul a faire car le nombre est déjà le résultat d'un calcul exporter dans un fichier texte
    il me faut juste que ce nombre est 2 décimal

    mais est il possible de faire votre solution en bat ?

    disons importer le fichier txt puis de lire le nombre et le mettre en variable
    comme cela

    Code:
    set /p VARIABLE=< FICHIER.txt
    et de faire votre procédé puis l'exporter dans un fichier txt ou voir remplacer celui d'origine ?
    Dernière modification par electrique10 ; 27/01/2015 à 06h52.

  5. A voir en vidéo sur Futura
  6. #5
    fred1599

    Re : Convertir un nombre avec décimal

    On peut faire cela avec n'importe quel langage, plus ou moins difficilement, mais le plus simple est de savoir quel est le langage que tu connais.

    Quel est l'objectif ? Apprentissage d'un langage de programmation ? Simple besoin d'un programme pour l'exécuter par la suite ?

  7. #6
    Bluedeep

    Re : Convertir un nombre avec décimal

    Citation Envoyé par electrique10 Voir le message

    mais est il possible de faire votre solution en bat ?
    Non.
    Mais en Powershell, oui.

  8. #7
    electrique10

    Re : Convertir un nombre avec décimal

    je suis entrain de programmer une petite base de donnée avec des calculs et j'utilise le logiciel "Longtion Application Builder"
    il fait les calculs comme je le souhaite mais a l'affichage il ne met pas les décimal
    il affiche 12 ou 12.3 alors que je veux 12.00 ou 12.30 par exemple
    alors du coup j'exporte le résultat dans un fichier texte et ensuite lancer le fichier bat avec votre fonction qui permettra de convertir le nombre avec les décimal
    qui sera enregistrer dans un nouveau fichier txt ou enregistrer dans le même fichier peu importe
    et une fois que j'aurais obtenu le résultat avec les 2 décimal importer le fichier txt dans mon logiciel pour qu'il affiche le résultat avec les 2 décimal.
    et pour moi le plus simple serais en bat car j'ai un peu de notion dans ce langage mais très peu le reste pas du tous.
    c'est pour cela que j'aurais préférer en bat

  9. #8
    Bluedeep

    Re : Convertir un nombre avec décimal

    Citation Envoyé par electrique10 Voir le message
    et pour moi le plus simple serais en bat car j'ai un peu de notion dans ce langage mais très peu le reste pas du tous.
    c'est pour cela que j'aurais préférer en bat
    Les manipulations de chaines en bat sont très limitées.
    Peut être avec une commande du style :

    for /F "delims ou token ou un truc du style" %%i in (fichier.txt) do call FichierBatTraitantLeRemplaceme nt.bat "%%i"

    Voir le paramètre "token" et "delim" du for.

    Je ne saurais aller plus loin, car pour ma part j'évite par nature de bricoler avec des langages inappropriés pour la tâche qu'on leur demande.

  10. #9
    cherbe

    Re : Convertir un nombre avec décimal

    Citation Envoyé par electrique10 Voir le message
    il fait les calculs comme je le souhaite mais a l'affichage il ne met pas les décimal
    il affiche 12 ou 12.3 alors que je veux 12.00 ou 12.30 par exemple
    alors du coup j'exporte le résultat dans un fichier texte et ensuite lancer le fichier bat avec votre fonction qui permettra de convertir le nombre avec les décimal
    As-tu pensé à utiliser un tableur (Excel, Libre Office, Google Doc...) ?
    Avec Excel, tu utiliserais la fonction =ARRONDI(A1;2)
    Tu sauvegarde et c'est fait.

    Tu ne nous as pas dit si ton fichier txt contient une seule valeur ou plusieurs et comment il est structuré (si plusieurs).
    Dernière modification par cherbe ; 27/01/2015 à 09h42.

  11. #10
    Bluedeep

    Re : Convertir un nombre avec décimal

    Accessoirement, ce n'est pas un problème d'arrondi mais de formatage. (dont je ne comprends d'ailleurs pas la nécessité).

  12. #11
    electrique10

    Re : Convertir un nombre avec décimal

    Non le fichier contient qu'une seule valeur
    Dernière modification par electrique10 ; 27/01/2015 à 09h55.

  13. #12
    electrique10

    Re : Convertir un nombre avec décimal

    c'est juste le résultat d'un calcul mais sans 2 décimal soit 12 si c'est un chiffre rond ou 12.3
    mais tous les cas il ne calcul pas avec 2 décimal

    et passer par excel ou autre ne sera pas possible car "Longtion Application Builder" lancera excel mais fera pas la manip automatiquement
    je serais obligé de le faire manuellement

    je souhaiterais un petit exe ou bat justement qui importe le fichier txt qui traite et converti puis enregistre
    ensuite le fichier txt converti avec les 2 décimal serais réimporter dans mon logiciel "Longtion Application Builder" pour l'affichage du résultat avec les 2 décimal

  14. #13
    Kissagogo27

    Re : Convertir un nombre avec décimal

    bonjour, et ce qui fait le calcul ne peut pas formater le résultat avec 2 décimales ?

  15. #14
    Bluedeep

    Re : Convertir un nombre avec décimal

    Citation Envoyé par Kissagogo27 Voir le message
    bonjour, et ce qui fait le calcul ne peut pas formater le résultat avec 2 décimales ?
    C'est pourquoi je disais plus haut que je ne comprenais pas la nécessité de sa demande.

  16. #15
    electrique10

    Re : Convertir un nombre avec décimal

    bonjour, et ce qui fait le calcul ne peut pas formater le résultat avec 2 décimales ?
    Non autrement je ne ferais pas une usine a gaz comme ca passer par un fichier externe puis convertir pour réinjecté au logiciel pour l'affichage avec 2 décimal j'aurais préféré mais bon
    la j'ai pas le choix que de passer par un fichier texte ce qui me manque c'est juste pour convertir le nombre qu'il contient avec 2 décimal

  17. #16
    albanxiii
    Modérateur

    Re : Convertir un nombre avec décimal

    Re,

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main( int argc, char **argv)
    {
        double f;
        char s[256];
        printf( "Entrez un nombre : " );
        scanf( "%s", s );
        f = atof(s);
        printf( "Chaîne lue : %s\nConversion en flottant : %f\nAffichage désiré : %.2f\n", s, f, f );
        return 0;
    }
    Works on my computer (c).

    @+
    Not only is it not right, it's not even wrong!

  18. #17
    Jack
    Modérateur

    Re : Convertir un nombre avec décimal

    Je pense que dans l'optique d'automatiser le processus, le nombre devrait être passé dans la ligne de commande et donc récupéré dans les paramètres de main.

  19. #18
    cherbe

    Re : Convertir un nombre avec décimal

    Citation Envoyé par electrique10 Voir le message
    je suis entrain de programmer une petite base de donnée avec des calculs et j'utilise le logiciel "Longtion Application Builder"
    il fait les calculs comme je le souhaite mais a l'affichage il ne met pas les décimal
    il affiche 12 ou 12.3 alors que je veux 12.00 ou 12.30 par exemple
    alors du coup j'exporte le résultat dans un fichier texte et ensuite lancer le fichier bat avec votre fonction qui permettra de convertir le nombre avec les décimal
    Ce code VBA fonctionne. Le résultat est dans fichier2.txt.
    Il faudrait le traduire en VBS ce qui ne doit pas être bien compliqué mais je ne sais pas faire :
    Sub decimales()
    ChDrive ("C:\")
    numero = FreeFile
    Open "c:\temp\fichier.txt" For Binary As #numero
    donnees = Input(15, #numero)
    If donnees Like "*,*" Then
    new_donnees = donnees & 0
    Else
    new_donnees = donnees & ",00"
    End If
    Close #numero
    Kill "C:\temp\fichier2.txt"
    Open "c:\temp\fichier2.txt" For Output As #numero
    Print #numero, new_donnees
    Close #numero
    End Sub

  20. #19
    electrique10

    Re : Convertir un nombre avec décimal

    Bonjour
    je viens d'essayer mais cela ne fonctionne pas

  21. #20
    Bluedeep

    Re : Convertir un nombre avec décimal

    Citation Envoyé par cherbe Voir le message
    Ce code VBA fonctionne. Le résultat est dans fichier2.txt.
    Il faudrait le traduire en VBS ce qui ne doit pas être bien compliqué mais je ne sais pas faire
    AFAIK, les instructions d'ouverture de fichier n'existent pas en VBS.

  22. #21
    cherbe

    Re : Convertir un nombre avec décimal

    Citation Envoyé par electrique10 Voir le message
    Bonjour
    je viens d'essayer mais cela ne fonctionne pas
    bonjour
    Tu as essayé quoi, comment ?

  23. #22
    electrique10

    Re : Convertir un nombre avec décimal

    J'ai fait ca


    Code:
    @echo off
    
    call:download 
    
    :download
    (
    echo Sub decimales^(^)
    echo ChDrive ^("C:\"^)
    echo numero = FreeFile
    echo Open "RESULT.txt" For Binary As #numero
    echo donnees = Input^(15, #numero^)
    echo If donnees Like "*,*" Then
    echo new_donnees = donnees ^& 0
    echo Else
    echo new_donnees = donnees ^& ",00"
    echo End If
    echo Close #numero
    echo Kill "fichier2.txt"
    echo Open "fichier2.txt" For Output As #numero
    echo Print #numero, new_donnees
    echo Close #numero
    echo End Sub ) >"DOWNLOAD.vbs"
    
    
    cscript "DOWNLOAD.vbs"
    
    goto:eof
    et une fois en vbs j'obtient

    Code:
    Sub decimales()
    ChDrive ("C:\")
    numero = FreeFile
    Open "RESULT.txt" For Binary As #numero
    donnees = Input(15, #numero)
    If donnees Like "*,*" Then
    new_donnees = donnees & 0
    Else
    new_donnees = donnees & ",00"
    End If
    Close #numero
    Kill "fichier2.txt"
    Open "fichier2.txt" For Output As #numero
    Print #numero, new_donnees
    Close #numero
    End Sub
    Dernière modification par electrique10 ; 28/01/2015 à 12h06.

  24. #23
    cherbe

    Re : Convertir un nombre avec décimal

    Citation Envoyé par electrique10 Voir le message
    J'ai fait ca
    Ce code fonctionne en VBS. Au besoin, modifie les chemins et noms de fichiers.
    Enregistre dans un fichier ayant l'extension VBS et double-clique sur ce fichier.

    Code:
        Dim filesys, text, readfile, contents
        Set filesys = CreateObject("Scripting.FileSystemObject")
        Set readfile = filesys.OpenTextFile("c:\temp\fichier.txt", 1, False)
        Do While readfile.AtEndOfStream = False
        donnees = readfile.ReadLine
          If InStr(1, donnees, ",") Then
            new_donnees = donnees & "0"
          Else
            new_donnees = donnees & ",00"
         End If
        Loop
        readfile.Close
        Const ForReading = 1, ForWriting = 2
       Set readfile = filesys.OpenTextFile("c:\temp\fichier2.txt", ForWriting, True)
       readfile.write (new_donnees)
        readfile.Close
    Dernière modification par JPL ; 28/01/2015 à 14h04. Motif: Ajout de la balise Code (#) pour garder l'indentation

  25. #24
    electrique10

    Re : Convertir un nombre avec décimal

    si je clic sur le fichier vbs directement j'ai un message d'erreur
    Nom : ERREUR.png
Affichages : 142
Taille : 8,1 Ko

  26. #25
    Bluedeep

    Re : Convertir un nombre avec décimal

    Citation Envoyé par electrique10 Voir le message
    si je clic sur le fichier vbs directement j'ai un message d'erreur
    Virer le blanc dans "Scripting.FileSy stemObject".
    C'est
    Code:
    "Scripting.FileSystemObject".
    
    

  27. #26
    electrique10

    Re : Convertir un nombre avec décimal

    nikel super ca fonctionne
    un grand merci

  28. #27
    JPL
    Responsable des forums

    Re : Convertir un nombre avec décimal

    Citation Envoyé par Bluedeep Voir le message
    Virer le blanc dans "Scripting.FileSy stemObject".
    C'est
    Code:
    "Scripting.FileSystemObject".
    
    
    Belle démonstration de ce qui se passe quand on n'utilise pas la balise Code (que je viens de rajouter dans le message 23). vBulletin insère en effet un espace arbitraire pour casser les chaînes de caractères trop longues à son goût.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

Discussions similaires

  1. convertir binaire au décimal
    Par afaf1995 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 06/07/2014, 10h59
  2. Convertir .txt en xls avec nombre de lignes > 65536
    Par inviteccee45bb dans le forum Logiciel - Software - Open Source
    Réponses: 12
    Dernier message: 26/08/2010, 13h48
  3. Convertir du decimal en hexa en c
    Par invitee5e48cea dans le forum Électronique
    Réponses: 4
    Dernier message: 26/02/2010, 12h56
  4. convertir binire en decimal (électronique)
    Par Netsend dans le forum Électronique
    Réponses: 10
    Dernier message: 29/10/2009, 11h53
  5. Convertir nombre en texte avec Excel
    Par invite2150efa6 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 01/01/2008, 18h58