我正在尝试将存储在Notes文档中的字段的小数部分删除为Number
字段。在xPages中,它将默认显示为Double,然后我想将其转换为Currency。当我使用标准货币转换器时,我无法摆脱小数部分。
我尝试将Double转换为显示Integer Only
,并以编程方式将Double转换为intValue。这个工作正常,只要我不使用货币转换器,似乎无论如何添加分数。我想这是因为default fractionpart
是2。
我猜一个重要的线索是我在谈论瑞典货币。
在瑞典,我们以这种模式显示货币:# ### ### kr
。
标点符号作为空格,货币符号在数字后面。
我试图像上面的例子一样使用Custom Converter - Pattern
但是我没有得到正确的标点符号。
所以 - 我想要实现的是:
Example: 112 000 kr
代码示例将返回:112 000,00 kr
当然我可以做一个字符串Conversion-concatenation operation
来实现这个目标,但最好的方法是有一种方法来获取CurrencyCode的default fraction part
并操纵它......?
对我而言似乎是bug
因为"Display Integer Only"
似乎被忽视了。
也许我找不到pattern conversion
,我可以使用?
代码示例:
<xp:inputText value="#{document1.totSumCost}" id="totSumCost1">
<xp:this.converter>
<xp:convertNumber type="currency" currencySymbol="kr" currencyCode="SEK" integerOnly="true" maxFractionDigits="0">
</xp:convertNumber>
</xp:this.converter>
</xp:inputText>
我“有点”以这种有点令人不安的方式解决了这个问题:
<xp:inputText value="#{document1.totSumCost}"
id="inputText2">
<xp:this.converter>
<xp:convertNumber type="currency" integerOnly="true"
locale="sv" maxFractionDigits="0" currencySymbol=" ">
</xp:convertNumber>
</xp:this.converter>
</xp:inputText>
<xp:text escape="true" id="computedField6">
<xp:this.value><![CDATA[#{javascript:return " kr"}]]></xp:this.value>
</xp:text>
答案 0 :(得分:2)
使用自定义转换器:
123456789.12
它将数字转换为瑞典货币格式,如
123 456 789 kr
- &gt; parseInt()
并将其解析回浮动状态。
如果您想将值保存为整数,请使用parseFloat()
代替{{1}}。
答案 1 :(得分:0)
的Anders,
我一直在努力解决同样的问题。我尝试了一切,但无法使用数字类型找到优雅的解决方案。我最终刚刚创建了一个自定义转换器,将其更改为字符串。
function numberWithCommas (x) {
var parts = x.toString().split(".");
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return parts.join(".");
}
以下是我们在整个应用程序中使用的功能。
class FooA_for_FooB
{
public:
virtual void Hello() = 0;
virtual void Hello2() = 0;
};
class FooA : public FooA_for_FooB
{
private: /* make them private */
void Hello() override;
void Hello2() override;
private:
void Hello3();
int m_iData;
};
class FooB
{
void fun()
{
FooA objA;
FooA_for_FooB &r = objA;
r.Hello() // right
r.Hello2() // right
objA.Hello3() // compile error
objA.m_iData = 0; // compile error
}
};
class FooC
{
void fun()
{
FooA objA;
objA.Hello() // compile error
objA.Hello2() // compile error
objA.Hello3() // compile error
objA.m_iData = 0; // compile error
}
};
我希望这会有所帮助。当我写作克努特的答案时,看起来非常相似。希望其中一个适合你。