我知道有关同一问题的各种帖子。
有点不同,这可能有点明显,但我需要你的意见。
我目前正在使用 Hibernate Search 和 Lucene 来索引实体属性。
我的实体上有一堆 Double 属性。
这些实体使用来自 Lucene 的默认网桥(网桥,即负责转换 LongToString 和 StringToLong 的网桥)一旦给我带来麻烦开始使用科学记数法。
我试图在。 xhtml 信用卡和借记卡金额上显示 DataTables ,它们的长度可以长达18位,以及它们的数据库( DB2 )类型是 BIGINT 。
那么问题是什么?
是否有一种方法从字符串说“1234567890”来检索格式为1234567890而不是1.23456789E9的Double,因为它默认由Double.parseDouble(FormattedString)
完成?
Double.parseDouble(FormattedString)
时我会放弃这种格式。
希望我很清楚,谢谢你的帮助。
答案 0 :(得分:6)
是否有一种方法从字符串说“1234567890”来检索一个值为1234567890而不是1.23456789E9的Double,因为默认情况下由
Double.parseDouble(FormattedString)
完成?
你的问题没有意义。 1234567890与1.23456789E9的值相同,double表示其中一个,当且仅当它代表另一个时。
我知道DecimalFormat的存在,但考虑到使用这个formater会给我一个正确格式化的字符串说:“#######。E0”但我真正需要的是一个Double使用这种格式,但是当做Double.parseDouble(FormatedString)时,我会松开这种格式。
不,没有办法构建Double
以便以某种方式显示它。 <{1}}的{{3}}方法就是这样,并且无法更改。
您唯一能做的就是使用Double
或DecimalFormat
,但正如您所指出的那样,您最终会得到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>
感谢向我说明了我模糊的基本内容:)