如何为CMD中的变量分配浮点数?

时间:2015-03-23 18:43:11

标签: batch-file

当我将其写为set /p=7.34时,它只考虑7而不是7.34。如何将变量设置为浮点数?

2 个答案:

答案 0 :(得分:2)

使用BAT / PS脚本:

@echo off
for /f  "delims=" %%x in  ('powershell 33.44 * 45.47') do echo %%x
pause

答案 1 :(得分:2)

嗯,首先是一个小评论:您可以任何浮点数分配给CMD中的变量。问题是当你想用这样的变量保留小数位时执行算术运算

我从this post复制了以下答案:

使用Batch中的定点运算执行操作很简单。 "固定点"意味着您必须提前设置小数位数并在整个操作过程中保留它们。直接执行两个固定点编号之间的加减运算。乘法和除法运算需要一个辅助变量,我们可以调用"一个",值为1,具有正确的小数位数(如" 0"数字)。在乘以之后,将产品除以"一个&#34 ;;在除法之前,将被除数乘以"一个"。这是:

@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