[Comando] Float.bat (Sumas y restas con decimales)

Iniciado por LauBuru, 29 Junio 2010, 01:17 AM

0 Miembros y 1 Visitante están viendo este tema.

LauBuru

Con este script podremos sumar y restar con dos decimales por lo menos :) , el code funciona bastante bien, despues de bastantes errores en el algoritmo creo haberlo afinado haunque si veis errores en los resultados me gustaria que pusierais las cantidades con las que habeis operado para estudiar el comportamiento y corregir el algoritmo, bueno espero que os sirva

La sintasix seria por ejemplo:


float xx,yy + xx,yy
float xx,yy - xx,yy


Este es el codigo resultante

Código (dos) [Seleccionar]

@echo off
set operador=%3
for /f "tokens=*" %%a in ('set /a "operando1=%1,%2"') do ( set decimales1=%%a)
for /f "tokens=*" %%b in ('set /a "operando2=%4,%5"') do (set decimales2=%%b)
for /f "tokens=*" %%c in ('echo %1') do ( set entero1=%%c)
for /f "tokens=*" %%d in ('echo %4') do ( set entero2=%%d)
set /a RsEntero=%entero1% %operador% %entero2%
set /a RsDecimal=%decimales1% %operador% %decimales2%
if "^%operador%s" == "^+s" (goto sumar)
if "^%operador%s" == "^-s" (goto restar)

:sumar
if "100" GEQ "%RsDecimal%" (set /a "RsEntero=%RsEntero% + %RsDecimal:~0,1%")
set "resultado=%RsEntero%,%RsDecimal%"
echo %resultado%
exit /b %resultado%

:restar
if "%decimales1%" LSS "%decimales2%" (set "decimales1=1%decimales1%" & set /a "entero1=%entero1%-1" & goto uno)
if "%decimales2%" LSS "%decimales1%" (set "decimales2=1%decimales2%" & set /a "entero2=%entero2%-1" & goto dos)

:uno
set /a RsDecimal=%decimales1%- %decimales2%
set /a RsEntero=%entero2%%operador%%entero1%
set resultado=%RsEntero%,%RsDecimal%
echo %resultado%
exit /b %resultado%

:dos
set /a RsDecimal=%decimales2%- %decimales1%
set /a RsEntero=%entero2%%operador%%entero1%
set resultado=-%RsEntero%,%RsDecimal%
echo %resultado%
exit /b %resultado%







Espero que os guste, un saludo gente
69696969 start notepad.exe ::

leogtz

Muy bien, no lo he probado, pero supongo que funciona.

Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

LauBuru

Hasta donde lo e testado funca, por eso añado que si encontrais alguna operacion que no da el resultado esperado me pongais las cifras para poder perfeccionarlo
69696969 start notepad.exe ::