从一个更大的数字中得到一个特定的数字?
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))
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))