PROGRESS 4GL - DECIMAL()函数在EUROPEAN数字格式上无法正常工作数字格式

问题描述:

我有一个字符输出(由.i生成)传递给DECIMAL()函数,然后存储为十进制类型的变量。字符o/p采用欧盟格式(2.5个2.5)。当通过DECIMAL函数将其放入十进制变量时,该值将变为25.这是什么原因以及什么是解决方案。PROGRESS 4GL - DECIMAL()函数在EUROPEAN数字格式上无法正常工作数字格式

我已经在startup.pf中更改了所需的numsep numdec参数,但这没有帮助。

请帮助!

的代码片段如下:

def var a as decimal no-undo. 
    a = decimal("2,5"). 
    message "test value" a. 
+0

这个问题已经编辑和重新签署,恕我直言,现在是主题和适当形成。 –

您需要-e参数添加到您的startup.pf。从Progress在线文档:

“使用欧洲数字格式(-E)参数告诉AVM在显示或提示时将千位分隔符显示为句点和小数点(例如:1.234.567,89)数值“。

https://documentation.progress.com/output/ua/OpenEdge_latest/index.html#page/dpspr%2Feuropean-numeric-format-(-e).html%23

+0

谢谢。忘了在我原来的文章中提到这个 - 我已经尝试过这个-E但没有工作。有没有其他的东西? –

+0

以下是代码片段: -------------------------------- def var a as decimal no-undo。 a =十进制(“2,5”)。 消息“测试值”a。 -------------------------------- –

+0

当我只用-E param运行代码时,我得到“test值2,5“。逗号在那里。 – TheDrooper

我认为,这显示了如何做你的需要:

define variable a as decimal no-undo. 

session:numeric-format = "European". 

a = decimal("2,5"). 

message "european:" a. 
pause. 

session:numeric-format = "American". 

message "american:" a. 
pause. 

这是很方便的能够会话内部切换 - 这允许你动态地处理这两种类型动态数字输入。

+0

谢谢汤姆。这给了我额外的知识。我已经通过会话数字属性修复了代码 - 用“欧洲”硬编码覆盖它。然而,它仍然不清楚为什么我需要以这种方式修复它,当我已经正确地在startup.pf中设置参数。 –