在K& R第71页中,atof函数正在使用数组索引。我试图使用指针算法实现相同的功能(因为它让人感觉像一个坏蛋:)。)。
double atof(char *str)
{
int sign;
double number = 0.0, power = 1.0;
while( isspace(*str) )
++str;
sign = (*str == '-') ? -1 : 1; // Save the sign
if(*str == '-' || *str == '+') // Skip the sign
str++;
while( isdigit(*str) ) // Digits before the decimal point
{
number = 10.0 * number + (*str - '0');
str++;
}
if(*str == '.') // Skip the decimal point
str++;
while( isdigit(*str) ) // Digits after the decimal point
{
number = 10.0 * number + (*str - '0');
power *= 10.0;
str++;
}
return sign * number / power;
}
主要
printf("%g\n", atof(" 123123.123")); // Outputs 123123
printf("%g\n", atof(" 1234.1222")); // Outputs 1234.12
我的错误是什么?!
答案 0 :(得分:4)
session.use_only_cookies
实施没问题。但是带有atof()
的printf会删除部分结果。
%g
是默认值。由于结果值具有更高的精度,因此丢失了。指定精度:
6
或者,您可以使用printf("%.12g\n", atof(" 123123.123"));
printf("%.12g\n", atof(" 1234.1222"));
(虽然会打印尾随零)。