在线文档教程
Erlang 20

固定 | 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

类型

取消提供的固定类型。如果该参数的类型不正确,则会引发异常。