使用 getItemValueDouble 返回的科学记数法
Posted
技术标签:
【中文标题】使用 getItemValueDouble 返回的科学记数法【英文标题】:Scientific Notation returned using getItemValueDouble 【发布时间】:2013-04-05 21:27:40 【问题描述】:我有一个带有以下代码行的 SSJS 函数,它不断以科学计数法返回字段“day”的值。除了以下内容之外,我还尝试过使用 BigDecimal,但没有任何区别。 SO 和其他关于科学记数法到十进制的博客上的所有其他问题都有 java 的示例,因此我已尽我最大的努力来解释如何为 SSJS 解释这些示例。
值存储在使用以下代码中的 exportDoc 访问的文档中,使用字段名称字段名称:天数据类型:数字数据长度:8 个字节序列号:1重复项 ID:0字段标志:摘要强>
-37.5
exportDoc.getItemValueDouble('day');
returned value: -3.75E1
var dform:java.text.DecimalFormat = new java.text.DecimalFormat("0.##");
var hrs:String = dform.format(exportDoc.getItemValueDouble('day'));
//using hrs:Double returns same value
returned value: -3.75E1
var hrs:String = dform.parse(@Text(exportDoc.getItemValueDouble('day')));
//using hrs:Double returns same value
returned value: -3.75E1
var hrs = Number(exportDoc.getItemValueDouble('day'));
returned value: -3.75E1
如果我将 exportDoc.getItemValueDouble('day') 乘以 10,我得到 -375,如果我再除以 10,我仍然得到 -3.75E1,如果我使用 exportDoc.getItemValueInteger('day'),我得到-38.
对于整数负数(例如 -2、-108 等)或正数(即使不是整数)也不会发生这种情况。
非常感谢任何帮助,因为这会在导入我们的 HRIS 系统时引起问题。
【问题讨论】:
这真的很奇怪。我敢打赌,如果你乘以 10,然后转换为字符串,然后再转换回数字,然后除以 10,你将得到 -37.5。我不知道它为什么坚持转换为科学计数法。 另外,如果这不起作用,请尝试将问题标记为“javascript”,您将接触到更广泛的受众。 我乘以 10,然后转换为字符串,再转换回数字,然后除以 10,仍然得到科学计数法。我想我必须向 IBM 报告一个错误!!! 【参考方案1】:你确定你没有设置某种转换器吗?
我刚刚整理了一个测试页面,但这里没有发生:
<xp:panel id="upperPanel">
<xp:label value="Number field (shows value stored in number field): "
id="label1"></xp:label>
<xp:inputText id="inputText1" value="#document1.subNum">
<xp:this.converter>
<xp:convertNumber type="number"></xp:convertNumber>
</xp:this.converter>
</xp:inputText>
</xp:panel>
<xp:panel id="lowerPanel">
<xp:label id="label2"
value="Calculated Number (computes value using .getItemValueDouble()): ">
</xp:label>
<xp:text escape="true" id="computedField1">
<xp:this.value><![CDATA[#javascript:currentDocument.getItemValueDouble("subNum")]]>
</xp:this.value>
<xp:this.converter>
<xp:convertNumber type="number"></xp:convertNumber>
</xp:this.converter>
</xp:text>
</xp:panel>
看起来像这样:
我什至尝试将 Notes 表单的字段属性设置为“科学”,但(当然)这对 Xpages 没有任何影响。
可能我没有得到你想要做的事情?
【讨论】:
是的,我实际上是在尝试在负值不是整数的字段上使用 .getItemValueDouble 时导出字段值并获取科学记数法。我将在本周末 .getItemValueDouble 调用之前发布代码。以上是关于使用 getItemValueDouble 返回的科学记数法的主要内容,如果未能解决你的问题,请参考以下文章