Jsp 关于c的数学:集合变量
与一些c:set语法(JSP/Eclipse中的JSTL)斗争 choose/when(if)部分和初始c:设置为row.sensorvalue可以正常工作,但任何对变量执行数学运算的尝试都会导致公式(而不是结果)以小数和实际值结束 感谢您的帮助Jsp 关于c的数学:集合变量,jsp,jstl,Jsp,Jstl,与一些c:set语法(JSP/Eclipse中的JSTL)斗争 choose/when(if)部分和初始c:设置为row.sensorvalue可以正常工作,但任何对变量执行数学运算的尝试都会导致公式(而不是结果)以小数和实际值结束 感谢您的帮助 <c:when test = "${row.typename == 'Temperature'}"> <c:set var = "initialvalue" value="${row.sensorvalue}" /> <
<c:when test = "${row.typename == 'Temperature'}">
<c:set var = "initialvalue" value="${row.sensorvalue}" />
<c:set var="decimalvalue" value="${initialvalue}*0.1875"/>
<c:set var="actualvalue" value="((10.888 - SQRT((-10.888)^2 +4*0.0035*(1777.3-${decimalvalue})))/(2*-0.00347) + 30)"/>
<td><c:out value="${actualvalue}"/></td>
</c:when>
问候
拉尔夫
在一个scriplet中成功地做到了这一点(凌乱,但我不会假装是开发人员)-
表达式是介于${
和}
之间的所有内容,即仅计算此部分,其余部分为文本常量(文字)。因此,您应该使用例如value=“${initialvalue*0.1875}”
来代替value=“${initialvalue}*0.1875”
(即,将整个公式放入${}
)中。感谢Jozef,第一部分工作,但与第二部分配合(变量在公式中)看看这里:-解释得很好。获取“当未指定默认名称空间时,函数SQRT必须与前缀一起使用”,但不知道如何修复此问题。我建议使用带有这些函数的bean,此类公式不属于JSP。
<%
String morecalcs = pageContext.getAttribute("calculatedvalue").toString();
//string to float
float forroot = Float.parseFloat(morecalcs);
//integer part for square root calcs
float fractionalPart = forroot % 1;
float integralPart = forroot - fractionalPart;
// square roote calcs
double actualvalue = (10.888 - Math.sqrt(Math.pow(-10.888, 2) +4*0.0035*(1777.3-integralPart)))/(2*-0.00347) + 30;
//1 decimal place
double rounded1 = Math.round(actualvalue * 10) / 10.0;
pageContext.setAttribute("finalvalue", rounded1);
%>