从一个更大的数字中得到一个特定的数字?

Getting a specific number from a bigger number?

a =(任意随机数)
有什么办法可以得到第三个数字 (12345) 而无需将其转换为字符串?
如果没有,将其转换为字符串有什么好的方法吗?

你可以用简单的数学计算得到。

function getDigitInt(value, digit)
  -- get rid of the sign
  value = math.abs(value)
  -- how many digits does the number have?
  local numDigits = math.floor(math.log(value, 10)) + 1
  -- does the requested digit exist?
  if digit > numDigits or digit < 1 then
    print("digit does not exist")
    return
  end
  -- return the requested digit
  return math.floor(value / 10^(numDigits - digit)) % 10
end
-- test
for i = 0, 8 do print(getDigitInt(1234567, i)) end

根据需要添加更多错误处理。这当然也只能处理整数。但我相信你也会发现如何将这个想法应用到小数上。

你可以把数字转换成数组,像blow一样轻松找到任何地方

public int GetDigitsPlace(int number, int digitPlace) {
    string t = number.ToString();
    int[] nArr = new int[t.Length];
    for(int i = 0; i < nArr.Length; i++) {
        nArr[i] = int.Parse(t[i]);
    }
    return nArr[digitPlace];
}

可以使用子函数

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

这将得到 a 的第三位数字:

a = 12345
print(getDigit(a,3))