【问题标题】:input a non-numeric value to a float将非数字值输入到浮点数
【发布时间】:2014-08-01 21:01:12
【问题描述】:

我有这个简单的代码,我将值输入到两个浮点变量并显示出来。我无法理解的是,如果我将输入作为非数字输入会发生什么。就像我输入'a'(没有'')时,会生成一个奇怪的数字——2.69525+0323.21398e=039。这个数字是如何以及为什么产生的?

#include<iostream.h>

int main()
{
    float x,y;
    cin>>x>>y;
    cout<<x<<y;
    return 0;
}

另外,如何阻止某人输入非数字值?我想将数字存储在一个数组中,遍历它并使用 isdigit(),这也是查看小数点是否出现并且它应该只出现一次的情况,但这似乎不是一个好方法。有更好的方法吗?

【问题讨论】:

  • 输入失败,如果您检查了返回值,您就会知道,并且变量会保留它们在声明它们时具有的随机未初始化值。
  • 即随机值xy 被初始化。这就是为什么你应该总是初始化你的变量。
  • @RetiredNinja 我不知道这是否是一个非常愚蠢的问题,但我如何检查 main() 返回的值?

标签: c++ char cout cin


【解决方案1】:

- 2.69525+0323.21398e=039实际上是两个奇怪的数字,它们之间没有空格。

它们很可能是 xy 中的随机值。 cin 失败,所以它们没有改变。

如何阻止某人输入非数字值?

  • 对他们大喊大叫,并威胁不要吃甜点。 - 或 -
  • 将值作为字符串导入,将它们验证为数字,然后将它们转换为浮点数。

【讨论】:

  • 感谢您的回复。所以我得到输入到 char 数组中的值,使用 isdigit() 将它们验证为数字?但是我应该怎么处理中间的小数点呢?请详细说明过程。我不太确定。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多