使用JSTL formatNumber通过curl浮点舍入错误

时间:2018-04-06 20:51:48

标签: java html jsp jstl atg

从Oracle Commerce Platform ATG 11.2开始,当我点击JBOSS服务器时,我在Web浏览器请求和卷曲之间得到了不同的结果 - 就像忽略了formatNumber,并且值遭受浮点舍入错误

<span itemprop="price-currency" content="USD">$</span>

<span itemprop="price" class="selection-price">
    <fmt:formatNumber type="currency"
                      pattern="##0.00;"
                      value="${selectionItem.listPriceAmount}"/>
</span>

100%一致性,在浏览器中点击页面将导致格式化值,例如:

  • $ 27.99
  • $ 20.00
  • $ 10.00

但是,Google抓取该网站时发现了一个问题,该网站只需通过同一页面的curl即可100%重现。这些相同的值显示为:

  • $ 27.990000000000002
  • $ 20.0
  • $ 10.0

内置没有用户代理逻辑,只有JSTL formatNumber

任何想法为什么通过完全相同的JSP完全相同的路径会产生不同的结果?

1 个答案:

答案 0 :(得分:3)

fmt:formatNumber在无法确定区域设置时绕过typepattern属性。这在JSTL spec

中有记录
  

如果此操作无法确定格式化区域设置,则会使用Number.toString()作为输出格式。

有关如何控制区域设置解析的信息,请参阅 9.2格式化区域设置部分。

使用curl时尝试设置标题accept-language