如何从一个大数字中获取一个特定的数字?

a = (任意数字)

有没有一种方法可以获取第三个数字(12 3 45),而不将其转换为字符串?

如果没有,通过将其转换为字符串获取它的好方法是什么?

点赞
用户2858170
用户2858170

您可以使用简单的数学知识来实现。

function getDigitInt(value, digit)
  -- 去除符号
  value = math.abs(value)
  -- 数字有几位?
  local numDigits = math.floor(math.log(value, 10)) + 1
  -- 请求的数字是否存在?
  if digit > numDigits or digit < 1 then
    print("不存在该数字")
    return
  end
  -- 返回请求的数字
  return math.floor(value / 10^(numDigits - digit)) % 10
end
-- 测试
for i = 0, 8 do print(getDigitInt(1234567, i)) end

根据需要添加更多的错误处理。当然,这只能处理整数。但我相信您会发现如何将此想法应用于小数。

2021-05-01 09:18:41
用户2459378
用户2459378

你可以将数字转换为数组,像下面这样轻松地找到任何位置

public int GetDigitsPlace(int number, int digitPlace) {
    //将数字转换为字符串
    string t = number.ToString();
    //创建一个整型数组,长度与字符串 t 相同
    int[] nArr = new int[t.Length];
    //遍历数组并将每个字符转换为整型存储
    for(int i = 0; i < nArr.Length; i++) {
        nArr[i] = int.Parse(t[i].ToString());
    }
    //返回指定位置上的数字
    return nArr[digitPlace];
}
2021-05-01 10:02:28
用户14677040
用户14677040

你可以使用 sub 函数:

function getDigit(value,digitPlace)
return tonumber(tostring(value):sub(digitPlace,digitPlace))
end

这将作为一个数字获取 a 的第三个数字:

a = 12345
print(getDigit(a,3))
2021-05-05 09:54:12