interestingyy, Оба варианта из поста #4 работают одинаково, причем второй - короче. Короче одной строки (если не учитывать присваивание и эхо для отображения) придумать трудно
А с округлением чуть короче. Вся кухня - в подпрограмме :Round, всё остальное - примеры её использования и отображение результатов
Код:

@echo off
cls
Set "A=-1234,3678"
Echo:
Echo %A%
Call :Round "A"
Echo %A%
Set "B=1234.53678"
Echo:
Echo %B%
Call :Round "B"
Echo %B%
Set "A=-1234.5678"
Echo:
Echo %A%
Call :Round "A"
Echo %A%
Set "num1=1234.456789"
Echo:
Echo %num1%
Call :Round "num1"
Echo %num1%
Set "num1=1234"
Echo:
Echo %num1%
Call :Round "num1"
Echo %num1%
Set "num1=1234."
Echo:
Echo %num1%
Call :Round "num1"
Echo %num1%
Set "num1=1234.0123"
Echo:
Echo %num1%
Call :Round "num1"
Echo %num1%
Set "num1=1234.0"
Echo:
Echo %num1%
Call :Round "num1"
Echo %num1%
Pause
GoTo :Eof
:Round
Call Set "@Round=%%%~1%%.0"
Set /A @Split=1%@Round:*.=% 2>nul
Set /A @Split=%@Split:~1,1% 2>nul
Set /A @Round=%@Round% 2>nul
If %@Split% GEQ 5 (Set /A @Split=1) Else (Set /A @Split=0)
If %@Round% LSS 0 Set /A @Split=-%@Split%
Set /A %~1=%@Round%+%@Split%
GoTo :Eof
Цитата interestingyy:
помочь мне код более компактным написать.. я чуть позже на этом форуме создам новую ветку »
|
Решаем проблемы по мере их поступления