使用getItemValueDouble返回科学记数法

时间:2013-04-05 21:27:40

标签: javascript xpages scientific-notation

我有一个带有以下代码行的SSJS函数,它以科学记数法继续返回字段'day'的值。我已尝试使用BigDecimal除了以下没有区别。所有关于SO和其他关于科学记数法到十进制的博客的所有其他问题都有java的例子,所以我已经尽力尝试如何解释这些例子的SSJS。

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

1 个答案:

答案 0 :(得分: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>

然后看起来像这样:

screenshot

我甚至尝试将Notes表单的字段属性设置为“科学”,但(当然)对Xpages没有任何影响。

可能我没有得到你想要做的事情?