我在玩VS 2012时遇到了一个非常棘手的问题(至少对我而言)。我有一个简单的程序,可以对命令行输入进行数学运算。但是,如果在程序中某处输入带小数位的参数,似乎会忘记小数点后的数字。
double add (char const *inp, char const *inp2) { //addition function
double val = std::strtol(inp, NULL, 0);
double val2 = std::strtol(inp2, NULL, 0);
return val + val2;
}
然后调用该函数:
double result = add(argv[1], argv[2]);
printf("%f \n", result);
并从命令行调用
test 52.2 44.6
返回96而不是96.8。
你想要的strtod
,不是strtol
。strtol
仅解析整数。
strtod
仅使用两个参数,因为浮点数始终以10为底(strtod
无论如何就算了)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句