batch-file - 是否可以告诉批处理文件在某个字符之后分析所有数据?
问题描述
我有这个代码来找到数字的平方根。但是,因为它是批处理的,所以它不支持浮点数。我想让人们输入浮点数,然后让我的代码能够知道小数点后有多少位,然后将其向上移动,但是需要多个位置才能使其变为正整数,哪个批次可以一起工作。
这可能吗?
如果没有,您是否知道任何其他代码可以让我用十进制数进行平方根计算?
这是我现有的平方根代码:
@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)
任何帮助将不胜感激。
解决方案
使用您的“逗号转换”方法,您仍然必须使用 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 "') ...
有点不寻常,但)
在这种情况下不需要转义特殊字符)
推荐阅读
- javascript - 变量未定义,no-undef;我怎样才能绕过这个错误?
- java - org.jsoup.select.Selector$SelectorParseException: 无法解析查询'': '' 处的意外标记
- javascript - 如何在一个反应组件中使用antd分隔器分隔屏幕的两侧?
- node.js - “找不到类型‘节点’的调试适配器。”
- assembly - 编写汇编代码来读取一个字符,如果是大写字母,显示它
- php - MYSQL JSON - 如何访问由数字键索引的嵌套 JSON 对象?
- flutter - Flutter 使用 GlobalKey 触发另一个状态函数
- scala - 基于类标签的自定义反序列化?
- powershell - 将 Powershell 帮助系统从 Command More 更改为 Less
- c++ - 为什么一个对象可以是if语句中的条件,请解释