概述
在编写myList
类的时候,涉及了格式化显示有序列表的序号问题,于是编写出了一套新的函数库myNum
,用于方便的处理整数或浮点数格式化。
初期只加入了几个简单函数,后续会加入十、十六、二进制转化以及科学计数法等内容。(本文会及时更新代码和使用案例)
代码
# ========================================================
# 名称:myNum
# 类型:静态函数库
# 简介:提供数字相关的处理函数
# 作者:巽星石
# Godot版本:v4.2.2.stable.official [15073afe3]
# 创建时间:2024年4月27日12:16:57
# 最后修改时间:2024年4月27日13:17:00
# ========================================================
class_name myNum# ============================ 获取数字的位数 ============================
# 返回整数或浮点数的位数(不包含小数点)
static func get_length(num) -> int:if num is int:return str(num).length()elif num is float:return str(num).length() - 1else:return -1# ============================ 判断类型 ============================
# 判断数字是否是整数
static func is_int(num) -> bool:return num is int# 判断数字是否是浮点数
static func is_float(num) -> bool:return num is float# ============================ 获取浮点数的整数或小数部分 ============================
# 获取浮点数的整数部分
static func get_float_int(num:float) -> int:return int(str(num).split(".")[0])# 获取浮点数的小数部分
static func get_float_point_num(num:float) -> float:return float("0." + str(num).split(".")[1])# ============================ 格式化显示 ============================
# 格式化显示
static func format(num,format:String) -> String:if num is int: # 整数,前面补0var fm = "%" + "0%dd" % format.length()return fm % numelif num is float:# 获取整数和小数部分var int_num # 整数部分var point_num # 小数部分if format.find(".") == -1: # 没有小数点int_num = str(num).split(".")[0]point_num = ""var fm1 = "%" + "0%dd" % format.split(".")[0].length()return fm1 % int(int_num) # 返回格式化的整数部分elif format.find(".") == 0: # 没有设定整数格式int_num = str(num).split(".")[0]point_num = str(num).split(".")[1]var fm2 = "%" + "0-%dd" % [format.length()-1]return "%s.%s" % [int_num,fm2 % int(point_num)] else:int_num = str(num).split(".")[0]point_num = str(num).split(".")[1]var fm1 = "%" + "0%dd" % format.split(".")[0].length()var fm2 = "%" + "0-%dd" % format.split(".")[1].length()# 格式化整数和小数部分int_num = fm1 % int(int_num)point_num = fm2 % int(point_num)# 返回完整字符串return "%s.%s" % [int_num,point_num] else:return ""
获取数字的位数
print(myNum.get_length(12)) # 2
print(myNum.get_length(12.35)) # 4
print(myNum.get_length(0.35)) # 3
判断一个数是否是整数或浮点数
print(myNum.is_float(123)) # false
print(myNum.is_float(123.25)) # true
获取浮点数的整数和小数部分
print(myNum.get_float_int(123.25)) # 123
print(myNum.get_float_point_num(123.25)) # 0.25
数字格式化
print(myNum.format(123.25,"0000.0000")) # 0123.2500
print(myNum.format(123.25,"0000")) # 0123
print(myNum.format(123.25,".0000")) # 123.2500
print(myNum.format(123,"0000")) # 0123
print(myNum.format(123,".0000")) # 00123 .被当做一个有效位数