Показать полную графическую версию : [решено] Обработка дробных чисел
newbibot
28-06-2016, 22:15
Здравствуйте.
Такой вопрос. Вводится какое-либо дробное число, например 10,25. Как его обработать, чтобы дробная часть не пропадала?
Например, можно ли разбить его на две других переменные с целой и дробной частью, типа а=10; в=25?
Или есть ещё какой нибудь способ?
Мсье, конечно, знает толк в извращениях. Но проще перейти к использованию WSH/PowerShell.
Что в данном конкретном случае значит «обработать»?
newbibot
29-06-2016, 16:11
Если бы я сам хотел так извращаться.
Перейти, к сожалению, никак.
В данном случае мне нужно такое вот число перевести в двоичный вид. Перевод я сделал, а вот как сделать так, чтобы не отбрасывалась дробная часть - не знаю.
Foreigner
29-06-2016, 17:31
как сделать так, чтобы не отбрасывалась дробная часть »
2>nul set /a a=56.36
echo %a%
Просто отбрасывает, не округляет
newbibot
29-06-2016, 17:53
Просто отбрасывает, не округляет »
Не совсем понял в чём фишка.
Мне нужно дробную часть тоже перевести. Но вот как её "поймать", чтобы она никуда не отбрасывалась и не округлялась, и чтобы потом её можно было перевести в двоичный вид - в этом весь вопрос.
Foreigner
29-06-2016, 18:42
newbibot, А как вообще дроби переводятся в дробное двоичное число? Будет ли верной запись:
56.36 = 100100111000
Вот в чем вопрос. Разделить 56.36 на 56 и 36 легко, каждое из полученных перевести в двоичные числа тоже не составит труда, а вот будет ли это правильным?
@echo off
setlocal enabledelayedexpansion
set "double=56,36"
for %%i in (%double%) do call:0 %%i
echo %result%
goto:eof
:0
set dec=%1
:loop
if %dec%==1 (
set bin=1!bin!
set result=!bin!
goto:eof
)
for /f %%i in ('set /a dec%%2') do (
set bin=%%i!bin!
if %%i==1 set /a dec-=1
set /a dec/=2
goto:loop
)
newbibot
29-06-2016, 19:18
newbibot, А как вообще дроби переводятся в дробное двоичное число? Будет ли верной запись:
56.36 = 100100111000 »
Вообще не понял, откуда вы взяли это число.
Что в онлайне, что в моей проге 56.36 = 111000.0110
Да и опять же, суть не в переводе, этого вопроса вообще не стоит.
Разделить 56.36 на 56 и 36 легко »
Это вот то мне и надо. Только вот число вводит пользователь.
Вот стоит у меня
set /p num = Число:
И вводят туда любое число вида XY,QZ. Что мне потом делать с ним?
Foreigner
29-06-2016, 19:34
Что в онлайне, что в моей проге 56.36 = 111000.0110 »
Поэтому и спрашивал. Как переводятся дроби в двоичные дроби? Мне не настолько это нужно, чтобы искать решение ради вас.
Это вот то мне и надо. »
И в чем проблема? Возьмите из примера выше:
set /p b="Enter double value with comma delimiter: "
for %%i in (%b%) do echo %%i
newbibot
29-06-2016, 19:57
И в чем проблема? »
Проблема в том, что я только начал со всем этим разбираться и не совсем пока разбираюсь. Так то код ваш код мне понятен, но я не могу сделать так, чтобы это записалось в переменные, а не просто выводилось на экран.
Пытался сделать как то так, но не работает.
for %%i in (%number%) do (
set a%k% = %%i
set/a k=%k%+1
)
Если сможете и с этим помочь, то это будет последний штрих.
Спасибо.
Foreigner
29-06-2016, 20:16
newbibot,
set d=56,36
for /f "tokens=1,2 delims=," %%i in ("%d%") do (
set "a=%%i"
set "b=%%j"
)
echo %a% %b%
newbibot
30-06-2016, 22:25
Спасибо огромное, всё заработало.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC