Batch Script - Floating Point Math


By: Wahine
January 6, 2012

Well, no, it's well documented that batch scripting cannot handle floating point maths.   However, by incorporating a few lines of VB scripting floating point math may be successful.

This hybrid batch/VB script shows how some calculations can easily be made.   The amounts used are for demonstration purposes only and it is not recommended that the script be used for sensitive currency calculations.   The script has been briefly tested in Win XP.

@echo off
cls
setlocal

echo wscript.echo eval(wscript.arguments(0))>%temp%\eval1.vbs

set total=1182078.11
set figtwo=4.70
set figtre=17.5

:: Calculate 4.70% of 1182078.11 & store the result in environment variable Grint
set c=%total%*(%figtwo%/100)
call :calc

set grint=%result%

:: Deduct 17.5% of Grint
set c=%grint%-(%grint%*(%figtre%/100))
call :calc

set net=%result%

:: Add Net to the value in Total giving Newtot
set c=%total%+%net%
call :calc

set newtot=%result%

echo     Start bill = %total:~-10%
echo.
echo   Gross markup = %grint:~-10%
echo    Nett markup = %net:~-10%
echo.
echo       New bill = %newtot:~-10%  (Start bill + Nett markup)

del %temp%\eval1.vbs
exit /b

:calc
for /f %%A in ('cscript //nologo %temp%\eval1.vbs "round(%c%,2)"') do (
    set result=        %%A
)


Need more help?
Describe your Problem
Example: Hard Drive Not Detected on My PC

Ask Question