过去几天我一直在研究ADempiere,我对此感到困惑。
我在数据库表上创建了一个名为Other_Number的新列,其引用类型为Quantity。最大长度为20。
在我的Java源代码中,我使用了BigDecimal。
现在,每当我尝试在Other_Number字段上输入正好20个数字时,最后4个数字将被舍入。假如我输入12345678901234567891.当我尝试保存时,它变为12345678901234567000。
除此之外。保存在数据库(PSQL)上的所有记录都附加了“.000000000000”(即12个零)。
现在我需要做一些事情,这样当我输入20位数时,最后4位数字不会被舍入。
此外,我需要摆脱“.000000000000”
你能告诉我为什么会这样吗?
答案 0 :(得分:2)
如果它实际上不是您想要的数字,而是某种仅包含数字的引用字段,请将应用程序字典中的定义更改为:
Reference: String
Length: 20
Value Format: 00000000000000000000 (i.e. 20 Zeros!)
答案 1 :(得分:2)
ADempiere作为财务ERP软件,在处理财务金额方面至关重要。在数据库中,确切的BigDecimal值必须保持其数据完整性。精度和舍入在代码中尽可能完美。作为已建立的着名项目Compiere ERP的一部分,iDempiere和Openbravo也来自这里,这样的财务金额管理已经得到很好的定义和解决。 也许您需要在适当的窗口http://wiki.idempiere.org/en/Currency_%28Window_ID-115%29
中设置精度答案 2 :(得分:1)
Adempiere将支持最多14(+5)位(数万亿)数量/业务量(美元货币)。
What currency you are using, is it possible to use this much amount/quantity in ERP system ?
如果您想更改逻辑,则可以在 DispalyType.java 类的 getNumberFormat 方法中更改逻辑。
业务情景是什么?
答案 3 :(得分:1)
在Adempiere中,java代码“setScale”方法用于舍入值
示例:
BigDecimal len= value
len= len.setScale(2,4);
setLength(len);