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

convert string to float with precision of 2 (25.00) in C++

本文关键字:精度 C++ 字符串 转换      更新时间:2023-10-16

在我的作业中,我必须取下串阀并将其转换为浮子例如

100将是100.00

100.0112将是无效的

100.99将保持原样

99将是99.00

我正在考虑使用"stof",但我一直纠结于如何设置2的精度。

输入验证

要检查输入是否有效,您可能需要简单地将其与等正则表达式进行匹配

  • ^([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。然后简单地以所需的精度输出。如果数字不太大,double的精度通常应该足以返回原始十进制值。

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

  • 永远不要实际转换为数字,而是通过字符串操作产生所需的输出。根据您的操作方式,它可能还负责验证。如果没有,请仅在通过上述验证后执行此操作