decimals in batch script

前端 未结 2 443
误落风尘
误落风尘 2020-12-19 14:12
echo off
cls

mode con: cols=55 lines=15

:MAIN
color 07
cls

set /p num1=\"Specify first number: \"
cls
set /p num2=\"Specify second number: \"
cls

set /a num3=%nu         


        
相关标签:
2条回答
  • 2020-12-19 14:21
    ::turn all strings with decimals to integers to perform arithmetic ops
    ::does not error check for non-numerics or non-numeric formatting
    ::I check beforehand or it's left as an exercise for the reader
    set mynum=12.34
    call:str2dec num pos %mynum%
    echo str2dec num %num% , pos %pos% for %mynum%
    set mynum=12.3
    call:str2dec num pos %mynum%
    echo str2dec num %num% , pos %pos% for %mynum%
    set mynum=12.
    call:str2dec num pos %mynum%
    echo str2dec num %num% , pos %pos% for %mynum%
    set mynum=12
    call:str2dec num pos %mynum%
    echo str2dec num %num% , pos %pos% for %mynum%
    set mynum=.34
    call:str2dec num pos %mynum%
    echo str2dec num %num% , pos %pos% for %mynum%
    GOTO:EOF
    :Str2Dec
    ::Str2Dec(retVal,decPlaces,strIn)
    ::returns the integer to %1 of strIn, %3, shifted %2 places to the left
    ::e.g. Str2Dec num pos 12.34 returns num=1234 pos=2
     SET #=%3
     SET lengthInput=0
     SET decpoint=
     SET /A integerVal=0
     SET /A shifted=0
     :lenStr2Dec
     IF DEFINED # (SET #=%#:~1%&SET /A lengthInput+=1&GOTO:lenStr2Dec)
     IF !lengthInput! LSS 2 SET /A integerVal=%3&GOTO:xStr2Dec
     SET numString=%3
     FOR /L %%x IN (1,1,!lengthInput!) DO (
      SET /A startCharIndex=%%x-1
      CALL SET nextChar=%%numString:~!startCharIndex!,1%%
      IF "!nextChar!" == "." (
        SET decpoint=1
      ) ELSE (
        IF DEFINED decpoint SET /A shifted+=1
        SET /A nextNum=!nextChar!
        SET /A integerVal*=10
        SET /A integerVal+=!nextNum!
      )
     )
     :xStr2Dec
     SET "%~1=!integerVal!"
     SET "%~2=!shifted!"
    GOTO:EOF
    
    0 讨论(0)
  • 2020-12-19 14:33

    Batch does not support floating point arithmetic. You have to rely on external scripts.

    http://www.computing.net/howtos/show/batch-script-floating-point-math/753.html

    Floating point division in a dos batch

    0 讨论(0)
提交回复
热议问题