在C ++中将字符串转换为float,精度为2(25.00)

时间:2015-02-22 00:04:14

标签: c++

在我的任务中,我必须把弦阀转换成浮子 例如

100将是100.00

100.0112无效

100.99将保持原样

99将是99.00

我正在考虑使用“stof”,但我仍然坚持如何设置2的精度。

1 个答案:

答案 0 :(得分:1)

输入验证

要检查输入是否有效,您可能只想将其与正则表达式(如

)匹配
  • ^([1-9][0-9]*|0)(\.[0-9]{0,2})?$(如果您不允许前导零,除了严格介于-1.0和1.0之间的数字)或
  • ^[0-9]+(\.[0-9]{0,2})?$(如果您允许前导零)或
  • ^[0-9]*(\.[0-9]{0,2})?$(如果您允许仅将0.31写为.31并允许前导零)。

计算数字

如果必须对字符串中编码的数字进行任何计算,并且如果没有硬性要求使用C ++类型float,请考虑使用固定点类型。二进制浮点类型(偶数double)不能精确地表示许多小数部分(即使后者限制在该点之后的两个小数位)。

文本输出的数字

如果您只需要以两位小数的格式显示/打印字符串中编码的数字,您有以下几种选择:

  • 通过验证后,将字符串转换为浮点格式,例如使用stofstod。然后只需output it with the wanted precisiondouble的精度通常应足以在数字不大的情况下返回原始十进制值。

  • 通过验证后,将字符串转换为定点格式,然后输出。

  • 从未实际转换为数字,而是通过字符串操作生成所需的输出。根据您的操作方式,它也可能会进行验证。如果没有,则仅在通过上述验证后执行此操作。