Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


interestingyy,
Цитата interestingyy:
к примеру есть число 1234.456789 »
Таких чисел не бывает! CMD работает только с целыми числами. То, что Вы изобразили - это текст. Даже если бы такие числа были, я бы назвал их числами с фиксированной точкой.
Преобразуем текст подобного вида в целое число с округлением
Код: Выделить весь код
@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%

Pause
GoTo :Eof

:Round
	Call Set "@Round=%%%~1%%"
	Set /A @Split=0
	FOR /F "tokens=1,2 delims=.," %%i IN ("%@Round%") DO Set /A @Round=%%i &If Not "%%j"=="" Set /A @Split=1%%j
	Set /A @Split=%@Split:~1,1%
	Set /A %~1=%@Round%
	If "%@Round:~0,1%"=="-" (
		If %@Split% GEQ 5 Set /A %~1=%@Round%-1
	) Else ( 
		If %@Split% GEQ 5 Set /A %~1=%@Round%+1  
	)
GoTo :Eof

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 29-01-2018 в 13:16.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:53, 29-01-2018 | #2