使用 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 返回的科学记数法的主要内容,如果未能解决你的问题,请参考以下文章

Java 中无参带返回值方法的使用

Java 中无参带返回值方法的使用

java 如何使用带参返回值

如何使用LINQ返回多个自选字段

excel返回地址函数的使用教程

使用所有类型的返回数据返回 null 值 Flutter