Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Puntoinfinito en 4 Junio 2012, 19:38 pm



Título: ¿Posible la opereción con un resultado decimal? - Batch
Publicado por: Puntoinfinito en 4 Junio 2012, 19:38 pm
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)


Título: Re: ¿Posible la opereción con un resultado decimal? - Batch
Publicado por: Bulone en 4 Junio 2012, 22:49 pm
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:


Código:
@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.


Título: Re: ¿Posible la opereción con un resultado decimal? - Batch
Publicado por: Puntoinfinito en 4 Junio 2012, 23:02 pm
Gracias

Pero entonces, esto no sirve si queremos hacer realizar el ejemplo :/

No?


Título: Re: ¿Posible la opereción con un resultado decimal? - Batch
Publicado por: Bulone en 4 Junio 2012, 23:03 pm
No entiendo que me quieres decir.

El resultado del ejemplo anterior nos sacaría en pantalla:

Código:
1,666


Título: Re: ¿Posible la opereción con un resultado decimal? - Batch
Publicado por: Puntoinfinito en 4 Junio 2012, 23:06 pm
Sí, eso si. Pero si queremos realizar un generador de códigos binarios (por ejemplo) poniendo tan solo una serie de números...

... Saludos


Título: Re: ¿Posible la opereción con un resultado decimal? - Batch
Publicado por: 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:

Có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


Título: Re: ¿Posible la opereción con un resultado decimal? - Batch
Publicado por: BatchianoISpyxolo en 5 Junio 2012, 01:17 am
Ahí tienes la función dectobin:
Código
  1. @echo off
  2. :: Batchiano para elhacker.net :)
  3. set decimal=%1
  4. set bin=2
  5. set "resultado="
  6. set "dectobin="
  7. :dectobin
  8. set /a r=%decimal%%%bin%
  9. set /a decimal=%decimal% / %bin%
  10. set resultado=%r%%resultado%
  11. if %decimal% GTR 0 (goto dectobin)
  12. set dectobin=%resultado%

Como se puede apreciar, los restos se colocan inversamente.


Título: Re: ¿Posible la opereción con un resultado decimal? - Batch
Publicado por: overxfl0w13 en 5 Junio 2012, 10:41 am
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:

Có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 %


Título: Re: ¿Posible la opereción con un resultado decimal? - Batch
Publicado por: Puntoinfinito en 5 Junio 2012, 21:52 pm
Muchas gracias.
Creo que lo entendí :D

Saludos