2016-06-20 68 views
-1

請我有問題解決有關Visual Fox Pro中的程序功能。20分鐘20分在視覺狐狸專業

我需要在十進制中每隔20分鐘舍入一次。例如:如果我收回19分鐘(0.316),則需要返回0分鐘。 如果我得到0-19分鐘之間,返回0分鐘 如果我得到20-39分鐘之間,返回20分鐘 如果我得到40-59分鐘之間,返回40分鐘 如果我得到60-79分鐘之間,返回60分鐘

我在想使用ROUND(),但我不知道如何因爲「圓」的方法到最近的小數。

在此先感謝。

+0

上午,但如果想圓500分鐘...? IIF(VAR1> 0,IIF(BETWEEN(VAR1,0,0.3166),0,IIF(BETWEEN(VAR1),0.3333,0.8166),0.3333,0)),0) –

回答

1
roundedMinutes = Floor(m.myMinute/20) * 20 

例如:

Create Cursor SampleMin (minutes i, rounded i) 
Local ix 
For ix = 1 To 600 
    Insert Into SampleMin ; 
     (minutes, rounded) ; 
     values ; 
     (m.ix, Floor(m.ix/20) * 20) 
Endfor 

Locate 
Browse 
+0

你的回答完美無瑕,非常感謝。 很簡單 –

0

這是我做的一個小小的prg,希望能幫助你,或者至少讓你朝正確的方向發展。

lnStart    = 0 
lnEnd    = 20 
lnReceivedMinutes = 500 
llNotDone   = .T. 

IF lnReceivedMinutes > 0 
    DO WHILE llNotDone 
     IF BETWEEN(lnReceivedMinutes, lnStart, lnEnd) 
      llNotDone = .F. 
      MESSAGEBOX(ALLTRIM(STR(lnStart)) + " Minutes") 
     ELSE 
      lnStart = lnStart + 20 
      lnEnd = lnEnd + 20 
     ENDIF 
    ENDDO 
ENDIF 

我檢查,看看是否收到的值是我lnStartlnEnd之間。如果不是的話,我會檢查接下來的20分鐘。

+0

非常感謝!完美的工作 –

0

切廷Basoz給了正確的答案

roundedMinutes = Floor(m.myMinute/20) * 20 

我檢查自己使用此