Я знаю, что это очень старая тема, но я не могу найти простой Batch-метод во всех предыдущих ответах, поэтому я публикую здесь простое Batch-решение, которое очень просто в использовании.
Выполнять операции с использованием арифметики с фиксированной точкой в пакетном режиме просто. «Фиксированная точка» означает, что вы должны заранее установить количество десятичных знаков и сохранять их на протяжении всей операции. Операции сложения и вычитания между двумя номерами с фиксированной точкой выполняются напрямую. Операции умножения и деления требуют вспомогательной переменной, которую мы можем назвать «один», со значением 1 с правильным количеством десятичных знаков (как цифры «0»). После умножения разделите произведение на «один»; перед делением умножьте дивиденд на «один». Вот оно:
@echo off
setlocal EnableDelayedExpansion
set decimals=2
set /A one=1, decimalsP1=decimals+1
for /L %%i in (1,1,%decimals%) do set "one=!one!0"
:getNumber
set /P "numA=Enter a number with %decimals% decimals: "
if "!numA:~-%decimalsP1%,1!" equ "." goto numOK
echo The number must have a point and %decimals% decimals
goto getNumber
:numOK
set numB=2.54
set "fpA=%numA:.=%"
set "fpB=%numB:.=%"
set /A add=fpA+fpB, sub=fpA-fpB, mul=fpA*fpB/one, div=fpA*one/fpB
echo %numA% + %numB% = !add:~0,-%decimals%!.!add:~-%decimals%!
echo %numA% - %numB% = !sub:~0,-%decimals%!.!sub:~-%decimals%!
echo %numA% * %numB% = !mul:~0,-%decimals%!.!mul:~-%decimals%!
echo %numA% / %numB% = !div:~0,-%decimals%!.!div:~-%decimals%!
Например:
Enter a number with 2 decimals: 3.76
3.76 + 2.54 = 6.30
3.76 - 2.54 = 1.22
3.76 * 2.54 = 9.55
3.76 / 2.54 = 1.48