Buenas a tod@s.
En batch:
Bueno, a ver... Me pregunto si hay la opción, cualquiera, de poder hacer cálculos con un resultado decimal.
Por ejemplo, imaginemos que quiero hacer con batch un generador de códigos binarios.
Como todos sabréis primero he de hacer la operación para saber si el código es 0 ó 1.
Para eso hay que dividir... y no siempre dará entero. Claro, el error esta ahí. Si batch no puede calcular números decimales.
¿Como hago en este caso para calcular 1?
No sé si me habre expresado suficientemente bien como para que me entendéis. Cualquier duda preguntad.
PD: Me sirve cualquier cosa, no solo comandos (en caso de que los haya) si no también alguna aplicación...
Saludos scripters de un lugar llamado mundo xD. ;)
Puntoinfinito (http://www.infiniter.tk)
He tenido muchas veces el problema de los decimales, y al final siempre he conseguido salir adelante multiplicando el numero que necesites calcular por 10, 100, 1000, etc, "tantos decimales como necesites"
Ej:
@echo off
rem queremos dividir 5 entre 3 y que nos de 3 decimales
set var=5
set /a var*=1000
set /a var/=3
set var=%var:~0,-3%,%var:~-3%
echo %var%
pause
No es que sea gran cosa, pero quizás te allude.
Gracias
Pero entonces, esto no sirve si queremos hacer realizar el ejemplo :/
No?
No entiendo que me quieres decir.
El resultado del ejemplo anterior nos sacaría en pantalla:
1,666
Sí, eso si. Pero si queremos realizar un generador de códigos binarios (por ejemplo) poniendo tan solo una serie de números...
... Saludos
No sé nada de batch, pero en los lenguajes de programacion el operador " % " suele devolver el resto de la division, te pongo un pseudocódigo:
Inicio
Num = numero a pasar a binario
mientras(num>0):
bin = num%2
num = num/2
fin
donde bin sería cada dígito del numero binario y 2 la base (binario = base 2)
espero que sea lo que necesitas
Ahí tienes la función dectobin:
@echo off
:: Batchiano para elhacker.net :)
set decimal=%1
set bin=2
set "resultado="
set "dectobin="
:dectobin
set /a r=%decimal%%%bin%
set /a decimal=%decimal% / %bin%
set resultado=%r%%resultado%
if %decimal% GTR 0 (goto dectobin)
set dectobin=%resultado%
Como se puede apreciar, los restos se colocan inversamente.
Cita de: Oblivi0n en 4 Junio 2012, 23:25 PM
No sé nada de batch, pero en los lenguajes de programacion el operador " % " suele devolver el resto de la division, te pongo un pseudocódigo:
Inicio
Num = numero a pasar a binario
mientras(num>0):
bin = num%2
num = num/2
fin
donde bin sería cada dígito del numero binario y 2 la base (binario = base 2)
espero que sea lo que necesitas
Te iba a decir lo mismo que ObliviOn pero como batch es tan raro que utiliza el operador módulo para tantas cosas he preferido no decirte nada por si te liabas más.
Pero para extraer el resto de las divisiones en la mayoría de los lenguajes de programación se utiliza este operador %
Muchas gracias.
Creo que lo entendí :D
Saludos