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

Floating point rounding error using JSTL formatNumber via curl

从 Oracle Commerce Platform ATG 11.2 开始,当我访问 JBOSS 服务器时,我在 Web 浏览器请求和 curl 之间得到了不同的结果——就像 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% 一致性的情况下,在浏览器中点击页面将产生格式化值,例如:

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

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

知道为什么通过完全相同的 JSP 的完全相同的路径会产生不同的结果吗?

fmt:formatNumber 在无法确定语言环境时会绕过 typepattern 属性。这记录在 JSTL spec:

If this action fails to determine a formatting locale, it uses Number.toString() as the output format.

请参阅 9.2 格式化区域设置部分了解如何控制区域设置分辨率。

尝试在使用 curl 时设置 header accept-language