【发布时间】:2015-06-28 01:37:18
【问题描述】:
我有一个jsp代码
<%
String n44rb= "p44_readback";
String reference44rb = ref.getDbTable(n44rb);
%>
<c:set var="reference44rb" value="<%=reference44rb%>"/>
<fmt:formatNumber value="${(r.p44_readback-row.p44_readback)}" maxFractionDigits="2" minIntegerDigits="2" pattern="##.## " var="nf"></fmt:formatNumber>
<td style="${(nf lt 0 ? - (nf) : nf ) le reference44rb ? 'background-color: lime':'background-color: pink'}" >
<fmt:formatNumber value="${(r.p44_readback-row.p44_readback)}" maxFractionDigits="2" minIntegerDigits="2" pattern="##.## (" var="nn"></fmt:formatNumber>
<c:out value="${nn}"></c:out>
<c:choose>
<c:when test="${r.p44_readback-row.p44_readback ne 0}">
<fmt:formatNumber value="${(r.p44_readback-row.p44_readback)/r.p44_readback}" maxFractionDigits="2" minIntegerDigits="2" type="percent" var="mm"></fmt:formatNumber>
<c:out value="${mm}" ></c:out><c:out value=")"></c:out></c:when>
<c:otherwise>
<c:out value="00%)"></c:out>
</c:otherwise></c:choose></td>
r.p44_readback的值是从bean获取的,格式为
Double doubleValue = Double.valueOf(rs.getString(2));
String formattedValue = String.format("%.2f", doubleValue);
ref_obj.setBeam_current(formattedValue);
其中 ref_obj 是类对象。
当我运行上面的 java 代码时,我收到错误 Cannot convert -00.02 of type class java.lang.String to class java.lang.Long in td tag line 但是为什么会出现这个错误,这里所有的值都在字符串中。
EDIT-1 我将 reference44rb 从 string 更改为 float as
<%
String n44rb= "p44_readback";
float reference44rb = ref.getDbTable(n44rb);
%>
<c:set var="reference44rb" value="<%=reference44rb%>"/>
<fmt:formatNumber value="${(r.p44_readback-row.p44_readback)}" maxFractionDigits="2" minIntegerDigits="2" var="nf" pattern="##.##"></fmt:formatNumber>
<td style="${(nf lt 0.0 ? - (nf) : nf) le reference44rb ? 'background-color: lime':'background-color: pink'}" >
<fmt:formatNumber value="${(r.p44_readback-row.p44_readback)}" maxFractionDigits="2" minIntegerDigits="2" pattern="##.## (" var="nn"></fmt:formatNumber>
<c:out value="${nn}"></c:out>
<c:choose>
<c:when test="${r.p44_readback-row.p44_readback ne 0}">
<fmt:formatNumber value="${(r.p44_readback-row.p44_readback)/r.p44_readback}" maxFractionDigits="2" minIntegerDigits="2" type="percent" var="mm"></fmt:formatNumber>
<c:out value="${mm}" ></c:out><c:out value=")"></c:out></c:when>
<c:otherwise>
<c:out value="00%)"></c:out>
</c:otherwise></c:choose></td>
我得到了正确的答案,但现在的问题是,当我在 td 标记中执行comapre<td style="${(nf lt 0.0 ? - (nf) : nf) le reference44rb ? '时,我将 reference44rb 的值设置为 0.01 和nf 也是 0.01 ,然后 显示粉红色 但应该显示绿色,因为我在这里使用了 le 即小于等于运算符,并且两个值都相等。
当我将 reference44rb 的值更改为 0.014 时,会显示绿色 colr。
【问题讨论】:
-
<c:when test="${r.p44_readback-row.p44_readback ne 0.0}"> -
@JigarJoshi,这个 c:when 标记中有什么内容。它是正确的。
-
我的意思是
0.0而不是0 -
td 标记行中出现错误
-
@JigarJoshi,当我没有在 td 之前比较并且不写
标记时,不会出现错误,但我需要在与 reference44rb 比较之前修剪我的减法值
标签: java string jsp double type-conversion