0

来自.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_intdouble/就无法做到decimal。这只是将 a 转换decimalint吗?

4

2 回答 2

1

代码写得很危险,但正如Richard Scheider在他的回答中推测的那样,其目的是获取数字的整数和小数部分。

问题是它SMALLINT是一个 16 位的量,范围为 ±32,767(-32,768 保留以表示 NULL)。aDECIMAL(12,5)可以接受的值最大为 9,999,999.99999。这个数字除以 50 比适合 a 的值范围大得多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

或者,只需更改SMALLINTINTEGER. INTEGER是一个 32 位有符号数。

于 2015-01-21T06:42:36.783 回答
1

您应该阅读 4GL 的手册!

代码似乎取了一个“实数”,除以 50,然后得到“整数”和“小数”部分。

于 2015-01-21T02:22:19.007 回答