来自.NET,我试图理解以下内容。
DEFINE total_real DECIMAL(12,5)
DEFINE total_dec DECIMAL(6,5)
DEFINE total_int SMALLINT
LET total_real = (total_real / 50)
LET total_int = total_real
LET total_dec = total_real - total_int
total_real - total_int
的目的是什么?
我尝试使用C#进行类似的操作,但如果没有先将total_int
转换为double
/ decimal
,就无法执行此操作。这只是将decimal
转换为int
吗?
答案 0 :(得分:1)
您应该阅读4GL上的手册!
似乎代码采用“实数”,除以50,然后得到“整数”和“小数部分”。
答案 1 :(得分:1)
代码写得很危险,但正如Richard Scheider中answer推测的那样,目的是得到数字的整数和小数部分。
问题是SMALLINT
是16位数量,范围为±32,767(保留-32,768表示NULL)。并且DECIMAL(12,5)
可以接受最大值为9,999,999.99999的值。并且该数字除以50比适合SMALLINT
的值的范围大很多。
使用“全十进制”执行作业,您可以使用:
DEFINE total_real DECIMAL(12,5)
DEFINE total_dec DECIMAL(6,5)
DEFINE total_frac DECIMAL(6,0)
LET total_real = (total_real / 50)
LET total_int = TRUNC(total_real)
LET total_frac = total_real - total_int
或者,只需将SMALLINT
更改为INTEGER
即可。 INTEGER
是32位签名数量。