首页 > 解决方案 > 是否可以告诉批处理文件在某个字符之后分析所有数据?

问题描述

我有这个代码来找到数字的平方根。但是,因为它是批处理的,所以它不支持浮点数。我想让人们输入浮点数,然后让我的代码能够知道小数点后有多少位,然后将其向上移动,但是需要多个位置才能使其变为正整数,哪个批次可以一起工作。

这可能吗?

如果没有,您是否知道任何其他代码可以让我用十进制数进行平方根计算?

这是我现有的平方根代码:

@echo off
color 16
Title SquareRoot

:StartSquareRoot
cls
echo Number:
set /p number=
call :SquareRoot %number%
echo Square: %number%
echo Root: %answer%
pause
goto StartSquareRoot

:SquareRoot
SETLOCAL
    EnableDelayedExpansion
set root=1
set /a sqr=%root%*%root%

:Loop
if %sqr% LSS %number% (
    set /a root=!root!+1
    set /a sqr=!root!*!root!
    goto Loop
)
(EndLocal && set answer=%root% && exit /B)

任何帮助将不胜感激。

标签: batch-file

解决方案


使用您的“逗号转换”方法,您仍然必须使用 INT32。如果您的数字太大(移位后),您会得到不正确的结果或错误消息。

更好地使用(借助)可以进行正确数学运算的编程语言(例如 Powershell):

@echo off
setlocal 
set /p "num=Number: "
for /f %%a in ('"powershell [math]::sqrt(%num%)"') do set "sqrt=%%a"
for /f %%a in ('"powershell %num%*%num%"') do set "sq=%%a"
echo Squareroot of %num% is %sqrt%, Square is %sq%

引用... ('" command "') ...有点不寻常,但)在这种情况下不需要转义特殊字符)


推荐阅读