0

我有一个带有以下代码行的 SSJS 函数,它不断以科学计数法返回字段“day”的值。除了以下内容之外,我还尝试过使用 BigDecimal,但没有任何区别。SO 和其他关于科学记数法到十进制的博客上的所有其他问题都有 java 的示例,因此我已尽我最大的努力来解释如何为 SSJS 解释这些示例。

值存储在使用以下代码中的 exportDoc 访问的文档中,使用字段名称
字段名称:day
数据类型:数字
数据长度:8 字节
Seq Num:1
Dup 项目 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 系统时引起问题。

4

1 回答 1

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 没有任何影响。

可能我没有得到你想要做什么?

于 2013-04-12T13:14:46.143 回答