固定 | fixed
固定
模块
固定
模块摘要
CORBA固定类型
描述
这个模块包含一些函数,这些函数给出了CORBA固定类型的接口。
类型Fixed
以下使用的定义为:
-record(fixed, {digits, scale, value}).
其中digits
是它所包含的数字的总数量,并且scale
是小数位数。该value
字段包含以整数表示的实际固定值。每个领域的局限性是:
- Digits - integer(), -1 > Digits < 32
- Scale - integer(), -1 > Scale =< Digits
- Value - integer(), range (31 digits): ±9999999999999999999999999999999
由于“值”部分由整数表示,因此“位数”和“比例”值正确至关重要。这也意味着在某些情况下不能忽略尾随零:
- fixed<5,3> eq. 03.140d eq. 3140
- fixed<3,2> eq. 3.14d eq. 314
前导零可以忽略。
为了您的方便,此模块导出处理对固定类型合法的unary(-
)和binary(+-*/
)操作的函数。由于一元+
函数没有效果,所以此模块不会导出这样的函数。任何二进制操作都可能导致溢出(即超过31位有效数字;前导和尾随零不被认为是重要的)。如果是这种情况,则会调整Digit和Scale值并截断值(不执行舍入)。此行为符合OMG CORBA规范。每个二进制操作都有以下上限:
- Fixed1 + Fixed2 - fixed<max(d1-s1,d2-s2) + max(s1,s2) + 1, max(s1,s2)>
- Fixed1 - Fixed2 - fixed<max(d1-s1,d2-s2) + max(s1,s2) + 1, max(s1,s2)>
- Fixed1 * Fixed2 - fixed<d1+d2, s1+s2>
- Fixed1 / Fixed2 - fixed<(d1-s1+s2) + Sinf ,Sinf >
商可以有任意数量的小数位数,用Sinf的比例表示。
输出
create(Digits, Scale, Value) -> Result
类型
此函数创建一个固定类型的新实例。 如果限制未满足(例如溢出),则会引发异常。
get_typecode(Fixed) -> Result
类型
返回表示提供的固定类型的TypeCode。如果该参数的类型不正确,则会引发异常。
add(Fixed1, Fixed2) -> Result
类型
执行固定类型的添加。如果参数的类型不正确,则会引发异常。
subtract(Fixed1, Fixed2) -> Result
类型
执行固定类型减法。如果参数的类型不正确,则会引发异常。
multiply(Fixed1, Fixed2) -> Result
类型
执行固定类型乘法。如果参数的类型不正确,则会引发异常。
divide(Fixed1, Fixed2) -> Result
类型
执行固定类型划分。如果参数的类型不正确,则会引发异常。
unary_minus(Fixed) -> Result
类型
取消提供的固定类型。如果该参数的类型不正确,则会引发异常。