跳转至

GFBigNumber

API Reference / Standard / 类索引

  • 路径:addons/gf/standard/foundation/numeric/gf_big_number.gd
  • 模块:Standard
  • 继承:RefCounted
  • API:public
  • 类别:值对象 (value_object)
  • 首次版本:3.17.0

面向挂机/放置场景的近似大数值对象。 使用科学计数法的尾数 + 指数表示任意量级的数值, 适合做超出原生 int/float 直观显示范围后的比较、加减乘除与格式化输入。

成员概览

类型 名称 签名
属性 mantissa var mantissa: float = 0.0
属性 exponent var exponent: int = 0
方法 zero static func zero() -> GFBigNumber:
方法 one static func one() -> GFBigNumber:
方法 from_int static func from_int(value: int) -> GFBigNumber:
方法 from_float static func from_float(value: float) -> GFBigNumber:
方法 from_string static func from_string(value: String) -> GFBigNumber:
方法 from_variant static func from_variant(value: Variant) -> GFBigNumber:
方法 clone func clone() -> GFBigNumber:
方法 is_zero func is_zero() -> bool:
方法 is_negative func is_negative() -> bool:
方法 abs_value func abs_value() -> GFBigNumber:
方法 negated func negated() -> GFBigNumber:
方法 compare_to func compare_to(other: GFBigNumber) -> int:
方法 add func add(other: GFBigNumber) -> GFBigNumber:
方法 subtract func subtract(other: GFBigNumber) -> GFBigNumber:
方法 multiply func multiply(other: GFBigNumber) -> GFBigNumber:
方法 divide func divide(other: GFBigNumber) -> GFBigNumber:
方法 powi func powi(power: int) -> GFBigNumber:
方法 powf func powf(power: float) -> GFBigNumber:
方法 to_float func to_float() -> float:
方法 to_plain_string func to_plain_string(decimal_places: int = _DEFAULT_PLAIN_DECIMALS, trim_zeroes: bool = true) -> String:
方法 to_scientific_string func to_scientific_string( decimal_places: int = 2, trim_zeroes: bool = true, use_truncation: bool = false ) -> String:

属性

mantissa

  • API:public
var mantissa: float = 0.0

归一化后的尾数。非零时其绝对值始终落在 [1, 10) 区间内。

exponent

  • API:public
var exponent: int = 0

以 10 为底的指数。

方法

zero

  • API:public
static func zero() -> GFBigNumber:

创建一个值为 0 的大数。

返回:零值实例。

one

  • API:public
static func one() -> GFBigNumber:

创建一个值为 1 的大数。

返回:一值实例。

from_int

  • API:public
static func from_int(value: int) -> GFBigNumber:

从 int 构建大数。

参数:

名称 说明
value 原始整数。

返回:归一化后的大数实例。

from_float

  • API:public
static func from_float(value: float) -> GFBigNumber:

从 float 构建大数。

参数:

名称 说明
value 原始浮点数。

返回:归一化后的大数实例。

from_string

  • API:public
static func from_string(value: String) -> GFBigNumber:

从字符串构建大数,支持普通写法与科学计数法。

参数:

名称 说明
value 原始字符串,如 "12345"、"1.23e8"。

返回:解析后的大数实例。

from_variant

  • API:public
static func from_variant(value: Variant) -> GFBigNumber:

从任意支持的 Variant 构建大数。

参数:

名称 说明
value 支持 int/float/String/GFBigNumber/GFFixedDecimal。

返回:对应的大数实例。

结构:

  • value: Variant numeric value accepted by GFBigNumber.

clone

  • API:public
func clone() -> GFBigNumber:

克隆当前大数。

返回:内容相同的新实例。

is_zero

  • API:public
func is_zero() -> bool:

当前值是否为零。

返回:为零时返回 true。

is_negative

  • API:public
func is_negative() -> bool:

当前值是否为负数。

返回:为负时返回 true。

abs_value

  • API:public
func abs_value() -> GFBigNumber:

获取绝对值。

返回:新的大数实例。

negated

  • API:public
func negated() -> GFBigNumber:

获取相反数。

返回:新的大数实例。

compare_to

  • API:public
func compare_to(other: GFBigNumber) -> int:

比较当前值与另一个大数。

参数:

名称 说明
other 另一个大数实例。

返回:当前值大于 other 返回 1,小于返回 -1,相等返回 0。

add

  • API:public
func add(other: GFBigNumber) -> GFBigNumber:

与另一个大数相加。

参数:

名称 说明
other 另一个大数实例。

返回:相加结果。

subtract

  • API:public
func subtract(other: GFBigNumber) -> GFBigNumber:

与另一个大数相减。

参数:

名称 说明
other 另一个大数实例。

返回:相减结果。

multiply

  • API:public
func multiply(other: GFBigNumber) -> GFBigNumber:

与另一个大数相乘。

参数:

名称 说明
other 另一个大数实例。

返回:相乘结果。

divide

  • API:public
func divide(other: GFBigNumber) -> GFBigNumber:

与另一个大数相除。

参数:

名称 说明
other 另一个大数实例。

返回:相除结果。

powi

  • API:public
func powi(power: int) -> GFBigNumber:

将当前大数提升到整数次幂。

参数:

名称 说明
power 幂指数。

返回:幂运算结果。

powf

  • API:public
func powf(power: float) -> GFBigNumber:

将当前大数提升到浮点次幂。

参数:

名称 说明
power 幂指数。

返回:幂运算结果。

to_float

  • API:public
func to_float() -> float:

将当前值转换为 float。

返回:可表达时返回浮点值,超出范围时返回 +/-INF。

to_plain_string

  • API:public
func to_plain_string(decimal_places: int = _DEFAULT_PLAIN_DECIMALS, trim_zeroes: bool = true) -> String:

在量级适中时输出普通十进制字符串,过大时会回退到科学计数法。

参数:

名称 说明
decimal_places 小数位数。
trim_zeroes 是否裁掉尾部 0。

返回:普通字符串表示。

to_scientific_string

  • API:public
func to_scientific_string( decimal_places: int = 2, trim_zeroes: bool = true, use_truncation: bool = false ) -> String:

输出科学计数法字符串。

参数:

名称 说明
decimal_places 小数位数。
trim_zeroes 是否裁掉尾部 0。
use_truncation 是否使用截断而不是四舍五入。

返回:科学计数法字符串。