我试图使一个"复杂的计算"在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在此之前没有初始化,所以我相信如果我尝试在那里存储一个浮点数,它应该保存一个浮点数。
这是我要复制的计算
我可以确认%
给出整数除法的余数。它将两个参数强制转换(截断)为整数,然后计算余数。这确实很奇怪,但由于向后兼容性,无法更改。主要的应用程序是计算"斑马表"之类的,我不知道它在哪里也是可取的……在项目的早期,它就是这样出现的,然后就卡住了。