【问题标题】:Presentation/validation of negative zero in jsp?jsp中负零的表示/验证?
【发布时间】:2014-11-17 14:13:32
【问题描述】:

我们有一个 jsp 页面,它显示了一些双精度值,在一些双精度值上,jsp 上还乘以 -1。这工作正常,除了零值显示为“-0”并且在 el 语句中选择正确的 css 类失败。

这是一个显示问题的示例:

<c:set var="positiveZero" value="${0.0}" />
<c:set var="negativeZero" value="${0.0 * -1}" />

<p>negativeZero: ${negativeZero}</p>
<p>less than 0? ${negativeZero < 0}</p>

<p>positiveZero: ${positiveZero}</p>
<p>less than 0? ${positiveZero < 0}</p>

这个的输出是:

negativeZero: -0.0
less than 0? true
positiveZero: 0.0
less than 0? false

您对如何确保将值显示为“正零”并确保“小于 0”语句在两种情况下都返回 false 有什么建议吗?

【问题讨论】:

  • 尝试将零添加到负零。它应该删除减号。
  • 我会研究这个解决方案:stackoverflow.com/questions/13749001/…
  • @Kaze,类似的东西可能是一个解决方案,但在这种情况下,我不能使用 Math.ABS,因为在某些情况下该值实际上是负数。

标签: java jsp el


【解决方案1】:

添加0.00

因为:

(-0.0) + 0.0 -> 0.0

请参阅here 以获取类似问题的答案和来源链接。

【讨论】:

  • 谢谢!此解决方案的唯一缺点是 JSP 代码看起来会更“混乱”,因为这将在单个 jsp 上添加大约 10 次。没有其他更好看的解决方案吗?
  • @SubUrban - 不知道如何完全干净 - 可能值得在一些 Java 库中添加静态方法 - 可能类似于 ${MathLib.asPositive(negativeZero)}
  • 解决方案是在我的 java 模型对象中添加一个额外的 getValueInverted() 方法,该方法乘以 -1 并添加 0.0d。使用这种方法,我可以从 jsp 层中删除计算,还可以对其进行 JUnit 测试,更干净,更好:-) 感谢您的帮助!
  • @SubUrban - 我会叫它negate 但这是你的电话。
【解决方案2】:

您可以使用这个小解决方法:

${negativeZero < 0 ? -negativeZero : negativeZero}

【讨论】:

  • 这在这种特殊情况下不起作用,因为某些值实际上是并且应该显示为小于 0。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 2014-10-02
  • 1970-01-01
  • 1970-01-01
  • 2013-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多