[股票]未登入天数计算 (讨论)

楼主: firejox (Tangent)   2017-10-19 21:19:47
HackMD 好读版 https://hackmd.io/s/ByRfXY76W
理由
目前僵尸税是以未登入天数*当日薪水去计算,而目前未登入天数计算为:
未登入天数累进 = floor((现在登入的时间 - 上次登入的时间) / 一天的时间)
若上次登入时间小于当季开始时间,则以当季开始时间算
换季时,未登入天数统计:
以当季结束时间,再做如下的累进公式一次:
floor((当季结束时间 - 最近一次登入的时间) / 一天的时间)
若最后的算出来的未登入天数大于当季的天数(目前是7天),则
未登入的天数为当季的天数。
备注:
换季时做的累进公式并不会去判断是否最近一次登入的时间小于当季开始的时间,
而是以实际最近一次登入的时间去计算。
而这样的计算,会发生即使每天有登入,也还会被记为登入天数的情况。
例如:昨天十点登,今天十一点登,则今天会被记未登入天数一天。这样不符合当初对于当
日未登入的使用者不发薪的目的。
改进方案
1. 维持原样
* 未登入天数计算公式 : 如上所述
* 系统更动 : 无
* 系统效能影响 : 无影响
* 对每日长时间游玩的使用者的影响 : 不会被课税
* 对于每日上线时间不固定的使用者的影响 : 如上所述,有可能会被记未登入
天数,课僵尸税。
* 对僵尸的影响 : 记未登入天数,被课税
2. 以换季时间 (目前是 10:00) 作为每天的换日时间点,以跨过换日时间点的次数
来计算未登入次数
* 未登入天数计算公式 :
未登入天数累进 = max(上次登入到现在跨过的换日点总数 - 1, 0)
换日点:每日 10:00
跨过换日点的定义为:
上次登入的时间 <= 换日点的时间 < 现在登入的时间
若上次登入的时间小于当季开始时间,则以当季开始时间开始算
换季时,未登入天数统计:
以当季节束时间,再做如下的累进公式一次:
floor((当季结束时间 - 最近一次登入的时间) / 一天的时间)
若最后的算出来的未登入天数大于当季的天数(目前是7天),则
未登入的天数为当季的天数。
备注:
换季时做的累进公式并不会去判断是否最近一次登入的时间小于当季开始
的时间,而是以实际最近一次登入的时间去计算。
* 实作细节 :
上次登入到现在跨过的换日点总数计算:
令现在登入时间为N,上次登入时间为P,当季开始时间为S,一天的时间为T
则跨过换日点总数为:
ceil((N - S)/T) - ceil((max(P, S) - S)/T)
* 系统更动 : 只要更新公式就好
* 系统效能影响 : 极小,可忽略
* 对每日长时间游玩的使用者的影响 : 不会被课税
* 对于每日上线时间不固定的使用者的影响 : 不会被课税
* 对僵尸的影响 : 记未登入天数,被课税
登入例子比较
参照HackMD好读版 https://hackmd.io/s/ByRfXY76W
以上是提案内容。

Links booklink

Contact Us: admin [ a t ] ucptt.com