elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Batch] Suma decimales
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Batch] Suma decimales  (Leído 2,881 veces)
modubat

Desconectado Desconectado

Mensajes: 7


Ver Perfil
[Batch] Suma decimales
« en: 15 Septiembre 2010, 20:55 pm »

Por las limitaciones del lenguaje batch no puede operar con numeros decimales, asi que nos las tenemos que ingeniar para poder usarlos
esto es una pequeña herramienta codeada por mi que nos permite sumar numeros, en principio iba ha hacer una calculadora pero es un proyecto que deje

les puede servir a mas de uno ;)



Uplo

Código
  1. :: Suma decimales
  2.  
  3. :: By modubat
  4.  
  5. @ECHO OFF
  6. (%comspec% /a /q /e:on /v:off /c "%~n$path:0") || EXIT/b
  7. SET/p "num1=>"
  8. echo. +
  9. SET/p "num2=>"
  10. CALL:SUMA "%num1%" "%num2%"
  11. ECHO.RESULTADO: %res%
  12. PAUSE>NUL
  13. EXIT/B 1
  14.  
  15. :suma
  16. SET/A COUNT=0
  17. FOR %%A IN ("%~1" "%~2") DO IF "%%~A"=="" GOTO:EOF
  18. SET "NUM1=%~1" & SET "NUM2=%~2" & SET "DEC1=0" & SET "DEC2=0"
  19. ECHO.%NUM1% | FIND "." >NUL && FOR /F "TOKENS=1-2 DELIMS=." %%A IN ("%NUM1%") DO (SET "NUM1=%%A" & SET "DEC1=%%B")
  20. ECHO.%NUM2% | FIND "." >NUL && FOR /F "TOKENS=1-2 DELIMS=." %%A IN ("%NUM2%") DO (SET "NUM2=%%A" & SET "DEC2=%%B")
  21. CALL:LEN "%dec1%"
  22. SET "l_dec1=%len%"
  23. CALL:LEN "%dec2%"
  24. SET "l_dec2=%len%"
  25. SET/a"l_dec=l_dec1-l_dec2"
  26. IF %l_dec% GTR 0 SET _var=true
  27. IF %l_dec% LSS 0 SET _var=false
  28. CALL:ABSOLUTE "%l_dec%"
  29. SET "l_dec=%NUM%"
  30. IF "%_var%"=="true" FOR /l %%a in (1 1 %l_dec%) do CALL SET dec2=%%dec2%%0
  31. IF "%_var%"=="false" FOR /l %%a in (1 1 %l_dec%) do CALL SET dec1=%%dec1%%0
  32. SET/a"grn=%dec1:~0,1%+%dec2:~0,1%"
  33. IF "%grn%"==0 SET "dec1=1%dec1%" & SET "dec2=1%dec2%"
  34. SET/a dec=dec1+dec2,num=num1+num2"
  35. IF "%grn%"=="0" SET dec=%dec:~1%
  36. CALL:LEN "%dec%"
  37. IF "%_var%"=="true" IF ["%len%"] NEQ ["%l_dec1%"] SET dec=%dec:~1% & SET/a num+=1
  38. IF "%_var%"=="false" IF ["%len%"] NEQ ["%l_dec2%"] SET dec=%dec:~1% & SET/a num+=1
  39. IF "%_var%"=="" IF ["%len%"] NEQ ["%l_dec1%"] SET dec=%dec:~1% & SET /a num+=1
  40. IF "%grn%"=="0" CALL :soub
  41. SET res=%num%.%dec%
  42. GOTO:EOF
  43.  
  44. :COMP
  45. if %dec% GTR 0 (
  46. set "comp1=1%~1"
  47. set "comp2=%~2"
  48. set/a comp=comp1-comp2
  49. call set comp=%%comp:~1%%
  50. ) else (set/a "comp=%~1-%~2")
  51. GOTO :EOF
  52.  
  53. :SOUB
  54. SET "dec1=1%dec1%" & SET "dec2=1%dec2%"
  55. SET/a dec=dec1+dec2
  56. SET dec=%dec:~1%
  57. GOTO :EOF
  58.  
  59. :REST
  60. CALL:LEN %*
  61. SET "tmpstring=%len%"
  62. SET/a tmpstring-=1,rdn_=1
  63. FOR /l %%i in (1 1 %tmpstring%) do CALL SET "rdn_=%%rdn_%%0"
  64. GOTO :EOF
  65.  
  66. :LEN
  67. IF "%~1"=="" GOTO:EOF
  68. FOR /F "DELIMS=:" %%F IN ('^(ECHO.%~1^&ECHO.^) ^| FINDSTR /O .') DO SET/A LEN=%%F-3
  69. GOTO :EOF
  70.  
  71. :ABSOLUTE
  72. SET "NUM=%~1"
  73. SET "NUM=%NUM:-=%
  74.  
  75.  

saludos




En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[BATCH]Mostrar Suma de las lineas de un archivo de texto. « 1 2 »
Scripting
FranciskoAsdf 10 11,331 Último mensaje 1 Julio 2011, 09:27 am
por WaAYa HaCK
[BATCH] CALC: Sumas y restas con decimales
Scripting
Binary_Death 5 4,578 Último mensaje 24 Julio 2012, 22:32 pm
por AgnesBlack
Suma de arrays en BATCH
Scripting
snpss 2 2,271 Último mensaje 24 Septiembre 2019, 18:39 pm
por snpss
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines