【Godot4.2】自定义数字处理相关函数库 - myNum

概述

在编写myList类的时候,涉及了格式化显示有序列表的序号问题,于是编写出了一套新的函数库myNum,用于方便的处理整数或浮点数格式化。

初期只加入了几个简单函数,后续会加入十、十六、二进制转化以及科学计数法等内容。(本文会及时更新代码和使用案例)

代码

# ========================================================
# 名称:myNum
# 类型:静态函数库
# 简介:提供数字相关的处理函数
# 作者:巽星石
# Godot版本:v4.2.2.stable.official [15073afe3]
# 创建时间:202442712:16:57
# 最后修改时间:202442713: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() - 1
	else:
		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: # 整数,前面补0
		var fm = "%" + "0%dd" % format.length()
		return fm % num
	elif 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 .被当做一个有效位数
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巽星石

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值