Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 批处理文件用于比较数字_Math_Batch File_Comparison_Batch Processing_Negative Number - Fatal编程技术网

Math 批处理文件用于比较数字

Math 批处理文件用于比较数字,math,batch-file,comparison,batch-processing,negative-number,Math,Batch File,Comparison,Batch Processing,Negative Number,一段时间以来,我一直在尝试制作一个可以处理负数的批处理文件。我最好的猜测是在批处理文件中创建一个小的“工程师”,在比较过程中为每个数字添加1000,并在比较后将数字恢复为正常值。 我的电脑运行Windows8,当我运行这个批处理文件时,它显示Beta(应该等于-93)比所有的数字都大,即使在“工程师”完成工作之后。我不知道如何解决这个问题。帮忙 @echo off :PRELOAD set alpha=0 set beta=0 set gamma=92 :MONKEYWRENCH

一段时间以来,我一直在尝试制作一个可以处理负数的批处理文件。我最好的猜测是在批处理文件中创建一个小的“工程师”,在比较过程中为每个数字添加1000,并在比较后将数字恢复为正常值。 我的电脑运行Windows8,当我运行这个批处理文件时,它显示Beta(应该等于-93)比所有的数字都大,即使在“工程师”完成工作之后。我不知道如何解决这个问题。帮忙

 @echo off
 :PRELOAD
 set alpha=0
 set beta=0
 set gamma=92
 :MONKEYWRENCH
 set /a beta=%beta% - 93
 echo Monkey Wrench
 :ENGINEERSTART
 set /a alpha=%alpha% + 1000
 set /a beta=%beta% + 1000
 set /a gamma=%gamma% + 1000
 :ECHOMONKEY1
 echo Alpha = %alpha%
 echo Beta = %beta%
 echo Gamma = %gamma%
 :COMPARE
 echo Start Comparison
 echo Alpha
 if '%alpha%' GEQ '%beta%' echo Alpha is greater than Beta
 if '%alpha%' LSS '%beta%' echo Alpha is lesser than Beta
 if '%alpha%' GEQ '%gamma%' echo Alpha is greater than Gamma
 if '%alpha%' LSS '%gamma%' echo Alpha is lesser than Gamma
 echo Beta
 if '%beta%' GEQ '%alpha%' echo Beta is greater than Alpha
 if '%beta%' LSS '%alpha%' echo Beta is lesser than Alpha
 if '%beta%' GEQ '%gamma%' echo Beta is greater than Gamma
 if '%beta%' LSS '%gamma%' echo Beta is lesser than Gamma
 echo Gamma
 if '%gamma%' GEQ '%alpha%' echo Gamma is greater than Alpha
 if '%gamma%' LSS '%alpha%' echo Gamma is lesser than Alpha
 if '%gamma%' GEQ '%beta%' echo Gamma is greater than Beta
 if '%gamma%' LSS '%beta%' echo Gamma is lesser than Beta
 echo End Comparison
 :ENGINEEREND
 set /a alpha=%alpha% - 1000
 set /a beta=%beta% - 1000
 set /a gamma=%gamma% - 1000
 :ECHOMONKEY2
 echo Alpha = %alpha%
 echo Beta = %beta%
 echo Gamma = %gamma%
 pause

删除所有引号


'%var%'
其中var=-83是字符串
'-83'
-包括引号。然后,Batch按字母顺序执行比较,按字符执行比较,因此
'123'
小于
'9'
,因为
1
小于
9

,如果比较运算符的两侧都解析为有效的有符号32位数字,则将对大小执行比较,否则,将比较两侧的字符串。AFAIAA,字符串比较将在ASCII值上从左到右进行,其中
-
的值高于
+
,但低于任何数字,因此任何负数将“正确”确定为“小于”任何无符号数字,但“大于”有符号正数字。如果符号相同,则将在最左侧比较跨越字符串区域的数字比较。@foxidrive-如果在比较非数字字符串时不使用ASCII码进行比较。大写字母从65开始,小写字母从97开始,但是如果lss B(echo TRUE)else echo FALSE返回TRUE,则
。IF按字母顺序排序,小写排序在大写之前。@dbenham我当时可能错了——这是我的理解。您的解释也有问题,因为
如果z lss B(echo TRUE)或echo FALSE返回FALSE。可能它使用了craptacular
findstr
logic;)@foxidrive-我的意思是它首先按字母顺序排序,如果是平局,则先按小写字母排序,再按大写字母排序:a