限制用户输入有效数字,直到小数点后2位C / C ++

时间:2009-10-15 18:47:15

标签: c++ c

我正在进行货币兑换计划,我会对输入金额进行准确的更改,例如23的值是20美元和3美元的钞票

我想限制用户输入值,直到小数点后2位。例如:有效输入是 20,20.4,23.44但无效输入为20.523或20.000。

我该怎么做才是C / C ++。

我读到了一个setprecision的函数,但这不是我想要的,setprecision允许显示直到该小数点的值,它仍然不会阻止用户输入任何值

有没有办法做到这一点?

4 个答案:

答案 0 :(得分:2)

以字符或整行的形式读取用户的数量,然后检查其格式,然后将其转换。

答案 1 :(得分:1)

通常更容易让用户键入他们想要的任何内容,然后程序拒绝输入,如果它无效,而不是限制他们可以键入的键入内容。

对于击键分析,您需要一个具有4种状态的状态机,我们可以将其命名为Number,Numberdot,Numberdotone和Numberdottwo。您的代码必须为所有击键进行正确的转换,包括将光标移动到某个任意位置的箭头键和Backspace键。这是很多工作。

使用输入验证,您所要做的就是使用正则表达式检查输入,例如^(([0-9] +)|([0-9] +。[0-9])|([0-9] +。[0-9] [0-9])$。这假定“20.”无效。如果它无效,则告诉用户并让他们再次进行。

答案 2 :(得分:0)

我不相信有任何方法可以设置库为您执行此操作。因此,你将不得不自己做这项工作。

有很多方法可以做到这一点,但处理限制输入的唯一真正方法是控制自己阅读。

在这种情况下,您将循环键盘输入,对于任何击键,您必须决定是否可以在过去输入的上下文中接受,然后显示它。也就是说,如果有小数点,您只接受更多数字。这也允许您将输入限制为数字和小数位,更不用说输入长度了。

缺点是您必须处理所有编辑命令。即使是裸骨,你也需要支持删除和输入。

答案 3 :(得分:0)

对于您正在使用的GUI而言,这是核心C / C ++的任务。根据您的GUI / Web Toolkit,您可以提供或多或少的详细规则,以便可以输入或不输入数据。

如果您正在编写普通的GUI应用程序,则可以控制和修改输入的密钥(使用C或C ++)。 在WEB应用程序中,您可以使用javascript执行类似的操作。 最好的解决方案是所有非法输入都是不可能的。