阿托伊与整数和双精度
atoi with ints and doubles
是否可以使用 atoi 将对话框的文本输入转换为双精度?
我需要对使用对话框输入的几个双精度值进行计算。我只知道"atoi",但这仅适用于整数吗?
与 atoi() 类似,您可以使用double atof ( const char * str )
参考
假设 Boost 是一个选项,Boost.lexical_cast 是一种流行的方法来转换数值的字符串表示,例如:
char const s[] = "1.2345";
try
{
double d = boost::lexical_cast<double>(s);
...
}
catch (boost::bad_lexical_cast &)
{
...
}
检查atoi
、atol
、strtol
族:
http://www.fiveanddime.net/man-pages/strtol.3.html
http://www.kernel.org/doc/man-pages/online/pages/man3/strtol.3.html
如果你
真的在使用C++(不仅仅是C),那么你可以使用stl的std::istringstream将文本解析为浮点数。
>您可以将std::stringstream
用作:
std::stringstream ss(text);
double value;
if ( !( ss >> value ) )
{
std::cout << "error : text is not double" << std::endl;
}
atoi
和 atof
都或多或少被破坏了;没有办法进行任何错误检查。 在大多数情况下,最简单的解决方案是使用 strtod
:
char* endPtr;
errno = 0;
value = strtod( input, &endPtr );
if ( errno != 0 || *skipSpaces( endPtr ) != ' ' )
// Illegal input, conversion failed.
(我通常是istringstream
的粉丝,但在这种情况下,这似乎矫枉过正。
相关文章:
- 我可以信任表示整数的浮点或双精度来保持精度吗
- C 字符串返回字符串的整数/双精度/长整型值
- 如何防止双精度值到整数的隐式转换
- 野牛/flex:计算器将双精度值解释为整数,所以我添加了 YYSTYPE 双精度 #define 但我有多个编译错误
- 为什么输出是整数而不是双精度?
- 从字符串转换为双精度和整数 - C++
- 从双精度转换为整数的显式类型是否始终检查整数溢出?
- C++,遇到将双精度转换为整数的问题
- 用双精度除以整数
- 使用整数初始化列表初始化长双精度的向量
- 如何判断 c++ 向量中的值类型(整数或双精度)?
- 了解双精度转换与整数转换中的整数与截断关系
- 为什么使用 int64_t 会产生错误的结果,而双精度则按预期进行简单的整数乘法
- 将双精度与整数进行比较
- 64 位整数到双精度冲突
- 在编译时将整数和分数部分宏组合成一个新的宏或双精度
- 不确定输出双精度或整数的代码行
- 双精度/整数模板函数的向量
- 如何通过 JNI 设置 java 类的双精度/整数类型的值
- 将输入验证为双精度/整数的函数