【问题标题】:Round minutes 20 in 20 in visual fox proVisual fox pro 中 20 分钟 20 分钟
【发布时间】:2016-06-20 17:02:21
【问题描述】:

请问我在解决 Visual Fox Pro 中某个程序的函数时遇到问题。

我需要以十进制每 20 分钟向下舍入一次。 例如:如果我收到 19 分钟 (0.316) y 需要返回 0 分钟。 如果我在 0-19 分钟之间,返回 0 分钟 如果我在 20-39 分钟之间,返回 20 分钟 如果我在 40-59 分钟之间,返回 40 分钟 如果我在 60-79 分钟之间,返回 60 分钟

我正在考虑使用 ROUND(),但我不知道如何使用,因为“Round”接近最接近的小数。

提前致谢。

【问题讨论】:

  • 我正在使用这个,但如果想要大约 500 分钟...? IIF(VAR1>0,IIF(BETWEEN(VAR1,0,0.3166),0,IIF(BETWEEN(VAR1),0.3333,0.8166),0.3333,0)),0)

标签: visual-foxpro


【解决方案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

【讨论】:

  • 您的回答完美无缺,非常感谢。很简单
【解决方案2】:

这是我制作的一个小项目,希望能帮助你,或者至少让你朝着正确的方向前进。

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 分钟。

【讨论】:

  • 非常感谢!完美工作
【解决方案3】:

Cetin Basoz 给出了正确答案

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

我已经检查了自己

【讨论】:

    猜你喜欢
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多