Hello all ^_^
The absolute, and final release for this. I think after many checks and balances; I have finished both the function, and macro of FLOATDIV. The function that allows you to divide 2 numbers into floating points.
Please enjoy this script! I worked REALLY hard on this, and I finally have it finished.
HF CODE FORMAT:
Code
@echo off & setlocal enableDelayedExpansion
call :macros
echo.
echo floatDIV MACRO
echo.----------------------------------------------------------
for /l %%a in (1,1,20) do (
set /a "rnd1=!random! %% 49 + 1", "rnd2=!random! %% 49 + 1"
%floatDIV% !rnd1! !rnd2!
)
echo.
echo.
echo floatDIV :FUNCTION
echo.----------------------------------------------------------
for /l %%a in (1,1,20) do (
set /a "rnd1=!random! %% 49 + 1", "rnd2=!random! %% 49 + 1"
call :floatDIV !rnd1! !rnd2!
)
pause & exit
:macros
set ^"LF=^
^" Above empty line is required - do not remove
set ^"\n=^^^%LF%%LF%^%LF%%LF%^^"
for /F %%a in ('echo prompt $E^| cmd') do set "ESC=%%a"
set floatDIV=for %%# in (1 2) do if %%#==2 ( for /f "tokens=1-3" %%1 in ("^!args^!") do (%\n%
set /a "i=%%~1 / %%~2", "f=(( ((~(%%~1-%%~2)>>31)&1) * ((10000 * (%%~1 - %%~2)) %% ((%%~2) * 10000) / %%~2) )|((~ ((~(%%~1-%%~2)>>31)&1) &1)* (((%%~1) * 10000) %% ((%%~2) * 10000) / %%~2) ))"%\n%
if "^!f:~3^!" equ "" set "f=0^!f^!"%\n%
for /f "tokens=1,2" %%a in ("^!i^! ^!f^!") do ( if "%%~3" neq "" ( set "%%~3=%%a.%%b" ) else echo %%~1 / %%~2 = %%a.%%b )%\n%
)) else set args=
goto :eof
:floatDIV
rem BOOL GY BOOL LY
set /a "i=%~1 / %~2", "f=(( ((~(%~1-%~2)>>31)&1) * ((10000 * (%~1 - %~2)) %% ((%~2) * 10000) / %~2) )|((~ ((~(%~1-%~2)>>31)&1) &1)* (((%~1) * 10000) %% ((%~2) * 10000) / %~2) ))"
if "!f:~3!" equ "" set "f=0!f!"
if "%~3" neq "" ( set "%~3=!i!.!f!" ) else ( echo %~1 / %~2 = !i!.!f! )
goto :eof