如何计算cmd处的十进制数

时间:2018-05-10 18:26:48

标签: batch-file

伙计我有一个文本框,用户可以输入有效的十进制数字。 后来我不得不用这个十进制数进行计算而没有舍入它。请帮助我在cmd

4 个答案:

答案 0 :(得分:1)

Pure batch仅支持32位整数,因此您必须进行一些更改才能使其工作并不困难,但是脚本稍大一些。而是使用vbscriptbatch的组合。 创建一个文件,并将其命名为MyCalc.cmd,然后将其粘贴到其中:

@echo off
setlocal
>"%temp%\calculate.vbs" echo Set clc = CreateObject("Scripting.FileSystemObject") : Wscript.echo (%*)
for /f "delims=" %%a in ('cscript /nologo "%temp%\calculate.vbs"') do set "var=%%a"
echo %var%
del "%temp%\calculate.vbs"

要使用它,请打开cmd.exe cd到您保存的文件所在的位置,然后运行MyCalc.cmd 10*0.5MyCalc.cmd 8.2/0.5MyCalc.cmd 3.2-0.3MyCalc.cmd 10+9.5等。< / p>

或者,将脚本的路径添加到系统的PATH环境中,您不必cd,也可以直接从cmdline调用d:\path to file\scripts\MyBat.cmd 10+2.3等。< / p>

答案 1 :(得分:1)

这是batch / vbscript hybrid 批处理传递参数并解析结果并将其存储在变量Result

::'@echo off &for /f "delims=" %%a in ('cscript //nologo //e:vbscript "%~f0" "%*"') do set "Result=%%a"
::'echo(Result=%Result%&exit /b
Wscript.echo Eval(Wscript.Arguments(0))
wscript.quit

::'之后有一个隐形字符(我希望它们被转移)

批处理文件存储为Math.cmd的一些示例(我的语言环境设置有小数点逗号)

>Math 3.76 + 2.54
Result=6,3

>Math 3.76 - 2.54
Result=1,22

>Math 3.76 * 2.54
Result=9,5504

>Math 3.76 / 2.54
Result=1,48031496062992

答案 2 :(得分:0)

此解决方案是早期帖子提供的解决方案 here

@echo off
setlocal EnableDelayedExpansion

set decimals=2

set /A one=1, decimalsP1=decimals+1
for /L %%i in (1,1,%decimals%) do set "one=!one!0"

:getNumber
set /P "numA=Enter a number with %decimals% decimals: "
if "!numA:~-%decimalsP1%,1!" equ "." goto numOK
echo The number must have a point and %decimals% decimals
goto getNumber

:numOK
set numB=2.54

set "fpA=%numA:.=%"
set "fpB=%numB:.=%"

set /A add=fpA+fpB, sub=fpA-fpB, mul=fpA*fpB/one, div=fpA*one/fpB

echo %numA% + %numB% = !add:~0,-%decimals%!.!add:~-%decimals%!
echo %numA% - %numB% = !sub:~0,-%decimals%!.!sub:~-%decimals%!
echo %numA% * %numB% = !mul:~0,-%decimals%!.!mul:~-%decimals%!
echo %numA% / %numB% = !div:~0,-%decimals%!.!div:~-%decimals%!

例如:

Enter a number with 2 decimals: 3.76
3.76 + 2.54 = 6.30
3.76 - 2.54 = 1.22
3.76 * 2.54 = 9.55
3.76 / 2.54 = 1.48

答案 3 :(得分:0)

尝试一下:

@echo off
set /p x=PLS Enter Your decision = 
echo WSH.Echo Eval(Wscript.Arguments(0))>>Q.vbs
cscript //nologo Q.vbs %x%
Del "Q.vbs"
Pause>nul