2015-02-06 86 views
-2

我正在寻找一个问题的命令。Visual Fox Pro 9 4位数字

我有一个4位数字,如3521,问题是我需要找到的数字,其中前两个数字是更大然后是最后两个。

+0

所以我需要一个像3+ 5 2 + 1是好的,因为8> 3 这个任何命令? – 2015-02-06 10:23:03

回答

1

假设你的号码是lnMyNumber:

lnMyNumber = 3521 
? (Val(Left(Str(lnMyNumber, 4, 0),2)) > Val(right(Str(lnMyNumber, 4, 0),2))) 
0

命令窗口例如:

LOCAL unknownType 
unknownType = 3521 
? CompareSumsOfTwoBytePairs(unknownType) && returns true 
unknownType = "3521" 
? CompareSumsOfTwoBytePairs(unknownType) && returns true 
unknownType = "YZAB" 
? CompareSumsOfTwoBytePairs(unknownType) && returns true 
unknownType = 35210 
? CompareSumsOfTwoBytePairs(unknownType) && too long, returns false 
* The following unexpected types return all false: 
unknownType = .F. 
? CompareSumsOfTwoBytePairs(unknownType) 
unknownType = .Null. 
? CompareSumsOfTwoBytePairs(unknownType) 
unknownType = CREATEOBJECT("Form") 
? CompareSumsOfTwoBytePairs(unknownType) 
unknownType = DATE(2015, 2, 7) 
? CompareSumsOfTwoBytePairs(unknownType) 

FUNCTION CompareSumsOfTwoBytePairs(u) 
    LOCAL c 
    c = TRANSFORM(u) 
    RETURN LEN(c) == 4 AND (SUBSTR(c, 1, 2) > SUBSTR(c, 3, 2)) 
ENDFUNC 
0

另一种选择是保留号码为数字VS被迫字符串转换。

n = 3521 
? INT(n/100) > n-(INT(n/100)*100) 

n/100 = 35.21... the int leaves just 35 

,这同样依据是另一半......

n-(INT(n/100)*100) 
3521 - (INT(3521/100) * 100) 
= 3521 - ( 35 * 100) 
= 3521 - 3500 = 21 

so 35 > 21 
0

这是一个完整的代码比你可以把一个函数

local lnVal, llReturn 

    lnVal=35821 

    llReturn=left(trans(lnVal),2)>right(trans(lnVal),2) 

    return llReturn 
+2

虽然此代码段可能会解决问题,但[包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 – Bono 2015-03-16 12:56:00