Visual foxpro Visual Fox Pro 9 4位数字

Visual foxpro Visual Fox Pro 9 4位数字,visual-foxpro,Visual Foxpro,我在找一个问题的答案 我有一个4位数的数字,比如3521,问题是我需要找到前两位数大于后两位数的数字。假设您的数字是lnMyNumber: lnMyNumber = 3521 ? (Val(Left(Str(lnMyNumber, 4, 0),2)) > Val(right(Str(lnMyNumber, 4, 0),2))) 命令窗口示例: LOCAL unknownType unknownType = 3521 ? CompareSumsOfTwoBytePairs(unknownT

我在找一个问题的答案


我有一个4位数的数字,比如3521,问题是我需要找到前两位数大于后两位数的数字。

假设您的数字是lnMyNumber:

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

命令窗口示例:

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

另一种选择是将数字保持为数字,而不是强制字符串转换

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

这是一个完整的代码,您无法将其放入函数中

    local lnVal, llReturn

    lnVal=35821

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

    return llReturn

所以我需要像3+5这样的2+1是好的,因为8>3有什么命令吗?虽然这个代码片段可以解决这个问题,但确实有助于提高你的文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。