数字尤其是十进制数字的内部解析是如何工作的?
How does the internally parsing of numbers and especially decimal numbers work?
如何在内部将字符串解析为数字格式?我想象过这样的事情。这与实际实施相符吗?
(与任何特定的编程语言无关)
int getDigit(char c)
{
if (c == '0')
return 0;
if (c == '1')
return 1;
if (c == '2')
return 2;
// ...
}
int parseInt(string str)
{
int result = 0;
for (int i = 0; i < strlength(str); i++)
result = result * 10 + getDigit(str[i]);
return result;
}
您首先获取每个数字值,然后乘以 10 的实现是一种常见的实现方式。例如,this one from MS,与您的实现基本相同。
在大多数语言中,您可以通过从输入字符中减去字符 '0'
来获得整数值,因为文本编码的工作方式。
如何在内部将字符串解析为数字格式?我想象过这样的事情。这与实际实施相符吗?
(与任何特定的编程语言无关)
int getDigit(char c)
{
if (c == '0')
return 0;
if (c == '1')
return 1;
if (c == '2')
return 2;
// ...
}
int parseInt(string str)
{
int result = 0;
for (int i = 0; i < strlength(str); i++)
result = result * 10 + getDigit(str[i]);
return result;
}
您首先获取每个数字值,然后乘以 10 的实现是一种常见的实现方式。例如,this one from MS,与您的实现基本相同。
在大多数语言中,您可以通过从输入字符中减去字符 '0'
来获得整数值,因为文本编码的工作方式。