首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ECL十进铸造

ECL十进铸造
EN

Stack Overflow用户
提问于 2022-10-19 17:54:33
回答 1查看 37关注 0票数 1

我想问一下为什么会发生这种事。

当我在使用COUNT时将结果强制转换为DECIMAL5_2时,当计数在与强制转换分开的行中时,它按计划工作:

代码语言:javascript
复制
c1 = COUNT($.MenInMStatesPersons(IsBornBefore1980);
c2 = COUNT(MenBornBefore1980);
PercOlderMalesInMStates := (DECIMAL5_2)(c1/c2 * 100); //result 14.46

当我试图将它压缩为一行时,输出就会发生变化:

代码语言:javascript
复制
PercOlderMalesInMStates := (DECIMAL5_2)(COUNT($.MenInMStatesPersons(IsBornBefore1980)/COUNT(MenBornBefore1980) * 100); 
//result is 15

但是,如果我将值声明为DECIMAL5_2类型,则只有一个班轮才能正常工作:

代码语言:javascript
复制
DECIMAL5_2 PercOlderMalesInMStates := (COUNT($.MenInMStatesPersons(IsBornBefore1980)/COUNT(MenBornBefore1980) * 100); 
//result is 14.86

非常感谢!

编辑:,我上面发布的代码和我的PC中实际的ECL文件中的代码有区别。显然,我在这里输入了一个工作表达式,而我在本地ECL文件中摸索了一下包。

这篇文章中的一条线:

代码语言:javascript
复制
PercOlderMalesInMStates := (DECIMAL5_2)(COUNT($.MenInMStatesPersons(IsBornBefore1980)/COUNT(MenBornBefore1980) * 100); 
//result is indeed correct (14.86)

本地ECL文件中的一行:

代码语言:javascript
复制
PercOlderMalesInMStates := (DECIMAL5_2) (COUNT($.MenInMStatesPersons(IsBornBefore1980)) / COUNT(MenBornBefore1980)) * 100;
//result is incorrect(15)

注意括号中的差异!我现在猜测发生这种情况的原因是,在我的本地ECL文件中,DECIMAL5_2转换发生在分数部分可以乘以100之前,因此它成为一个整数。

再次感谢您,为您的错误道歉!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-19 19:31:35

在我的机器上,这段代码为所有这三种代码生成了完全相同(正确)的答案:

代码语言:javascript
复制
IMPORT $;
IsBornBefore1980 := $.Persons.BirthDate < '1980'; 
MenBornBefore1980 := $.Persons(Gender = 'M',BirthDate < '1980'); 
c1 := COUNT($.MenInMStatesPersons(IsBornBefore1980));
c2 := COUNT(MenBornBefore1980);
PercOlderMalesInMStates1 := (DECIMAL5_2)(c1/c2 * 100); //result 14.46
PercOlderMalesInMStates2 := (DECIMAL5_2)(COUNT($.MenInMStatesPersons(IsBornBefore1980))/COUNT(MenBornBefore1980) * 100); 
DECIMAL5_2 PercOlderMalesInMStates3 := COUNT($.MenInMStatesPersons(IsBornBefore1980))/COUNT(MenBornBefore1980) * 100; 
PercOlderMalesInMStates1;
PercOlderMalesInMStates2;
PercOlderMalesInMStates3;

我不知道为什么您的代码会产生不同的结果,但是在我的代码版本运行之前,我确实需要纠正几个语法错误。试试我的版本看看你能得到什么。

HTH,

理查德

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74129882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档