可以在没有科学记数法的情况下格式化Double吗?

时间:2011-02-16 15:19:23

标签: java string double hibernate-search

我知道有关同一问题的各种帖子。

有点不同,这可能有点明显,但我需要你的意见。

我目前正在使用 Hibernate Search Lucene 来索引实体属性。

我的实体上有一堆 Double 属性。

这些实体使用来自 Lucene 的默认网桥(网桥,即负责转换 LongToString StringToLong 的网桥)一旦给我带来麻烦开始使用科学记数法。

我试图在。 xhtml 信用卡和借记卡金额上显示 DataTables ,它们的长度可以长达18位,以及它们的数据库( DB2 )类型是 BIGINT

  1. 我无法更改DataBase类型 以龙为例。
  2. 我不能改变Double 我的实体的类型属性 或者例如Long
  3. 那么问题是什么? 是否有一种方法从字符串说“1234567890”来检索格式为1234567890而不是1.23456789E9的Double,因为它默认由Double.parseDouble(FormattedString)完成?

    PD:我知道 DecimalFormat 的存在,但是考虑到使用这个格式化器会给我一个正确格式化的字符串说:“#######。E0”但是什么我真正需要的是具有这种格式的Double,但是在执行Double.parseDouble(FormattedString)时我会放弃这种格式。

    希望我很清楚,谢谢你的帮助。

3 个答案:

答案 0 :(得分:6)

  

是否有一种方法从字符串说“1234567890”来检索一个值为1234567890而不是1.23456789E9的Double,因为默认情况下由Double.parseDouble(FormattedString)完成?

你的问题没有意义。 1234567890与1.23456789E9的值相同,double表示其中一个,当且仅当它代表另一个时。

  

我知道DecimalFormat的存在,但考虑到使用这个formater会给我一个正确格式化的字符串说:“#######。E0”但我真正需要的是一个Double使用这种格式,但是当做Double.parseDouble(FormatedString)时,我会松开这种格式。

不,没有办法构建Double以便以某种方式显示它。 <{1}}的{​​{3}}方法就是这样,并且无法更改。

您唯一能做的就是使用DoubleDecimalFormat,但正如您所指出的那样,您最终会得到String.format

答案 1 :(得分:4)

对Lucene一无所知,但在.xhtml文档中永远不会有Double。它始终是一个字符串。 Double没有Format,只有Double的String表示。

答案 2 :(得分:1)

所以我终于解决了我的问题。 在完成了 aioobe Jens Schauder 之后。我可以使用以下标记在.xhtml上动态格式化文本:

<h:outputText value="#{recordTable[column.property]}"
              rendered="#{column.header ne 'Details' and
                          column.header eq ('Total Credit Amount' or
                                            'Total Debit Amount')}">
              <f:convertNumber pattern="########"/>
</h:outputText>

感谢向我说明了我模糊的基本内容:)