模函数在自由标记截断结果



我试图使一个"复杂的计算"在freemarker模板。计算需要调用一个模数调用。起初我一直在简化我的代码,最后只是硬编码值,试图找出原因,但似乎freemarker的mod函数总是返回int值??但它们甚至不是四舍五入的,它们被截断了。我要圆润的。向上就可以了)。我最简单的代码是这样的:<#assign p_year_m1 = (2503.638 % 7.00)?float>

的较长版本是:<#assign p_year_m1 = ((bdy_m1 + (bdy_m1/4.0)-(bdy_m1/100.0)+(bdy_m1/400.0)))%7>

所以正确的答案应该是4.638,四舍五入到5,但我得到4.00,即使我把?string[0.00]包裹起来。

我错过了什么?当然,一定有办法让这个工作!如果没有,我想我需要帮助构建一个工作来获得类似的结果。

谢谢。

PS - var, p_year_m1在此之前没有初始化,所以我相信如果我尝试在那里存储一个浮点数,它应该保存一个浮点数。

这是我要复制的计算

我可以确认%给出整数除法的余数。它将两个参数强制转换(截断)为整数,然后计算余数。这确实很奇怪,但由于向后兼容性,无法更改。主要的应用程序是计算"斑马表"之类的,我不知道它在哪里也是可取的……在项目的早期,它就是这样出现的,然后就卡住了。

最新更新