Por que o código a seguir retorna 0?
Arquivos em lote não suportam matemática de ponto flutuante. Para contornar essa limitação, você precisa usar outras linguagens de script.
Powershell e VBS são possibilidades:
Matemática em arquivos em lote do NT
Limitações
There is a severe limitation in batch math: it can only handle 32-bit
integers.
...
There are no real workarounds that allow floating point math, except
using other scripting languages. The only exception may be if you have
a limited and fixed number of decimals (e.g. 2), then you can just
multiply everything by 100. To display a decimal delimiter in the end
results, concatenate the ineger divide by 100, followed by the decimal
delimiter, followed by the modulo divide by 100:
SET Whole = Result / 100
SET "Fraction = Result %% 100"
SET Result=%Whole%.%Fraction%
This may break on the 32-bit limit, though.
In general, for floating point math I would recommend using other
scripting languages.
Fonte Matemática em arquivos em lote do NT