¿Posible la opereción con un resultado decimal? - Batch

Iniciado por Puntoinfinito, 4 Junio 2012, 19:38 PM

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

Puntoinfinito

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
AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.

Bulone

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.
No existen los caminos equivocados puesto que en este viaje no puedes dejar de ir hacia donde vas

Puntoinfinito

Gracias

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

No?
AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.

Bulone

No entiendo que me quieres decir.

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

1,666
No existen los caminos equivocados puesto que en este viaje no puedes dejar de ir hacia donde vas

Puntoinfinito

Sí, eso si. Pero si queremos realizar un generador de códigos binarios (por ejemplo) poniendo tan solo una serie de números...

... Saludos
AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.

Oblivi0n

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

BatchianoISpyxolo

#6
Ahí tienes la función dectobin:
Código (dos) [Seleccionar]
@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.
Puede que desees aprender a programar desde 0: www.espascal.es

overxfl0w13

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 %
[/url]

Puntoinfinito

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.