I4GL到.NET - 试图理解decimal和int

时间:2015-01-21 02:16:33

标签: c# informix 4gl

来自.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吗?

2 个答案:

答案 0 :(得分:1)

您应该阅读4GL上的手册!

似乎代码采用“实数”,除以50,然后得到“整数”和“小数部分”。

答案 1 :(得分:1)

代码写得很危险,但正如Richard Scheideranswer推测的那样,目的是得到数字的整数和小数部分。

问题是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位签名数量。