IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Nombre à virgule en batch


Sujet :

Scripts/Batch

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Par défaut Nombre à virgule en batch


    Pour suivre les conseils de "maxim_um"

    1) Comment peut-on additionner des nombres à virgule en batch ?
    2) Comment récupérer un résultat non tronqué après une division ?


  2. #2
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    Salut,

    avec du batch hybride par exemple:

    "non bien tester "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    @echo off
    
    :ndef
    cls
    echo.
    set /p "_set=->> "
    if not defined _set (goto:ndef)
    for %%: in ("(=^(",")=^)") do (call set _set=%%_set:%%~:%%) 
    for %%: in ("E = %%_set%%","WScript.Echo E") do >>_.Vbs (call echo.%%~:)
    for /f "" %%: in ('cscript /nologo _.Vbs') do (call set _t=%%:)
    echo.
    if defined _t (call echo RESULTAT=[ %%_t:,=.%% ])
    del _.vbs 2>nul
    
    pause
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ((0.25 * 63.23) / (3.25 - 1.23)) / 2
    
    => 3.91274..
    ou bien avec la commande externe Gawk:

    exemple basique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    set v1=2.25
    set v2=0.25
    
    gawk "BEGIN{print \"%V1% * %v2% est egal à \"%v1% * %v2%}"

  3. #3
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    C'est également possible en découpant les nombre en partie entière / partie décimale, aligner les chiffres, effectuer les opérations (simple pour l'addition, plus chaud pour les autres), puis recombiner les résultats. C'est le principe de calcul par virgule fixe, un vieux truc d'accélération des calculs réels lorsque les FPU n'étaient pas toujours présents sur les machines.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Par défaut
    Salut I'm_Here, pourrais-tu expliquer ce bout de code pas à pas parce que je débute et je ne comprends pas tout

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    @echo off
    
    :ndef
    cls
    echo.
    set /p "_set=->> "
    if not defined _set (goto:ndef)
    for %%: in ("(=^(",")=^)") do (call set _set=%%_set:%%~:%%) 
    for %%: in ("E = %%_set%%","WScript.Echo E") do >>_.Vbs (call echo.%%~:)
    for /f "" %%: in ('cscript /nologo _.Vbs') do (call set _t=%%:)
    echo.
    if defined _t (call echo RESULTAT=[ %%_t:,=.%% ])
    del _.vbs 2>nul
    
    pause

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Enlève le "del _.vbs 2>nul" à la fin, puis regarde le fichier "_.vbs" généré : ce sera sûrement beaucoup plus clair (enfin, si tu connais un peu le VBScript).
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Par défaut
    Ouai j'avais juste bougé le "pause" avent le del

    C'est juste pour m'améliorer en batch que je voudrais avec des explication détaillées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @echo off
    cls
    set /p Calcule=
    echo E = %Calcule% >> __.vbs
    echo WScript.Echo E >> __.vbs
    cscript /nologo __.Vbs
    del __.vbs 2>nul
    pause

  7. #7
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    Comme à dit Mac LAK ça sera plus clair si tu visualises le fichier .vbs
    le principe est simple, laisser cscript.exe faire les calculs au lieu de cmd.exe

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Par défaut
    ouai j'ai bien compris j'ai même fait un petit exemple plus simple
    Par contre comme je l'ai dit... des petites explications sur ton code seraient les bienvenues ^^

Discussions similaires

  1. Réponses: 9
    Dernier message: 22/05/2021, 15h33
  2. Ecriture de nombres à virgule dans un fichier
    Par Berliozz dans le forum VBScript
    Réponses: 2
    Dernier message: 02/09/2006, 15h36
  3. additionner des nombres à virgules
    Par Phiss dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/03/2006, 10h35
  4. problème avec les nombres à virgule
    Par shingo dans le forum Langage
    Réponses: 3
    Dernier message: 16/01/2006, 18h30
  5. [Console] Comment afficher de gros nombres à virgule ?
    Par Évariste Galois dans le forum C++
    Réponses: 9
    Dernier message: 11/07/2005, 09h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo