From 3f94f38e99d304eaa02a74d5bd8063c75919bbf0 Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Thu, 27 Jul 2023 16:20:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20maths=20=E5=8C=85=E6=96=B0=E5=A2=9E=20C?= =?UTF-8?q?ountDigits=20=E5=92=8C=20GetDigitValue=20=E5=87=BD=E6=95=B0?= =?UTF-8?q?=EF=BC=8C=E7=94=A8=E4=BA=8E=E8=AE=A1=E7=AE=97=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E6=95=B0=E5=AD=97=E7=9A=84=E4=BD=8D=E6=95=B0=E5=92=8C=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=89=B9=E5=AE=9A=E4=BD=8D=E6=95=B0=E4=B8=8A=E7=9A=84?= =?UTF-8?q?=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/maths/math.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/utils/maths/math.go b/utils/maths/math.go index 991ddb6..e56c9e1 100644 --- a/utils/maths/math.go +++ b/utils/maths/math.go @@ -139,3 +139,34 @@ func ToContinuous[V generic.Integer](nums []V) map[V]V { } return result } + +// CountDigits 接收一个整数 num 作为输入,并返回该数字的位数 +func CountDigits(num int) int { + // 处理0的特殊情况 + if num == 0 { + return 1 + } + + // 取绝对值 + absNum := int(math.Abs(float64(num))) + + // 计算位数 + count := 0 + for absNum > 0 { + absNum /= 10 + count++ + } + + return count +} + +// GetDigitValue 接收一个整数 num 和一个表示目标位数的整数 digit 作为输入,并返 +// 回数字 num 在指定位数上的数值。我们使用 math.Abs() 函数获取 num 的绝对值,并通 +// 过除以10的操作将 num 移动到目标位数上。然后,通过取余运算得到位数上的数值 +func GetDigitValue(num, digit int) int { + absNum := int(math.Abs(float64(num))) + for i := 0; i < digit; i++ { + absNum /= 10 + } + return absNum % 10 +}