当前位置: 首页 > 面试题库 >

服务器设置将覆盖DecimalFormat

甘永春
2023-03-14
问题内容

目前,我在显示格式化的小数时遇到问题。在我的本地计算机中,我有一个十进制值:0.002100000000存储在数据库中。

<h:outputText value="0.002100000000" converter="#{bigDecimal4DigitsConverter}" />

@FacesConverter("bigDecimal4DigitsConverter")
public class BigDecimal4DigitsConverter extends BigDecimalConverter {

    private DecimalFormat format = new DecimalFormat("#,##0.0000");

    @Override
    protected DecimalFormat getDecimalFormat() {
        return format;
    }
}

我的问题是在本地计算机上显示:0.0021-美国设置,但在另一台服务器上0,0021-法语设置

这是为什么?我以为DecimalFormat,无论区域设置如何格式化十进制值?


问题答案:

DecimalFormat模式是,正如它的名字(和javadoc)说,一个纯粹的模式。在此模式中,,代表分组分隔符,而.代表十进制分隔符。这是完全一样为MMM代表的缩写月SimpleDateFormat(注意,它不返回MMM为月格式化过程中,但就像May或者例如Mei取决于环境)。

格式化过程中,用作分组分隔符和十进制分隔符的 实际 字符(以及用作缩写月份的 实际
文本)取决于您的语言环境。这是正确的行为。如果您在创建DecimalFormat(或SimpleDateFormat)时未明确指定语言环境,则将采用默认的可用语言环境Locale#getDefault()。实际上,您应该指定一个UIViewRoot#getLocale()或固定的语言环境,例如,Locale.ENGLISH如果出于某些不清楚的原因未对JSF
Web应用程序进行本地化。

另请注意,DecimalFormat它(SimpleDateFormat不是)不是线程安全的(请检查javadoc中的“同步”部分)。您不应在类/实例范围内创建它,而应在线程局部范围内(即与所需位置相同的方法块中)创建它。

我不知道BigDecimalConverter您使用的是哪种,标准的JSF没有getDecimalFormat()方法,因此我无法给出适当方法的更具体的示例。



 类似资料:
  • Debug 字段 该设置默认值是 false,当发生错误时,只返回错误信息本身。 当该字段设置为 true 时,当发生 panic 时,会将整个 panic 的错误堆栈信息返回给客户端,在用户进行 hprose 服务开发时,该设置可以帮助你快速定位错误位置。 ErrorDelay 字段 该设置为整型值,默认值为 10 秒。 该字段表示在调用执行时,如果发生异常,将延时一段时间后再返回给客户端。 在

  • 我正在探索在运行时为JavaWeb应用程序执行Cobertura代码覆盖,我遇到了一篇文章http://www.mojohaus.org/cobertura-maven-plugin/instrumentingDeploymentArtifact.html 我遵循这些步骤,在一个小型maven web应用程序上获得了覆盖率报告,我在JBoss服务器上部署了一个war文件(包含一个模块),并手动浏览

  • 说明 当前文档是在H5 JS SDK的设置代理服务器基础之上进行的补充,请先查看H5 JS SDK中设置代理服务器的相关配置,根据H5 JS SDK配置完成之后,再继续根据当前文档进行配置。 Nginx代理服务器配置的补充 配置HTTPS 注意:应替换整个[xxx]形式,包括[]。 server { listen 443 ssl; server_name [域名];

  • 为解决浏览器中请求不同域名下的Linkface公有云接口,需要通过代理服务器进行代理转发。在代理服务器中我们可以加API_ID和API_SECRET包含在请求链接中,从而提高了客户账户的安全性。 由于在实际部署的时候,代理服务器和部署H5的服务器往往不会同域,所以用户可以在代理服务器上开启CORS。 也就是说,设置代理服务器主要是为了提高安全性以及解决前端js sdk跨域问题。 需要代理的接口列表

  • 问题是:我试图通过单击按钮调用两个函数。这两个函数都会更新状态(我正在使用useState钩子)。第一个函数将value1正确更新为“new 1”,但在1s(setTimeout)后,第二个函数启动,它将值2更改为“new 2”,但是!它将值1设置回“1”。为什么会这样?提前谢谢!

  • 我有base/config/services。yaml在我的Symfony 4.3项目中存储了许多服务。例如: 对于我的测试目的,我有配置/测试/test_services.yaml,其中存储带有前缀的服务,以测试私有服务,使它们在test env中公开。 服务之一,在test_服务中声明。yaml没有前缀。它的名称(FQCN)与服务中定义的另一个名称相同。亚马尔。它们具有相同类型的不同构造函数参