当我将其写为set /p=7.34
时,它只考虑7而不是7.34。如何将变量设置为浮点数?
答案 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