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

C++ 在C+中,将字符串转换为精度为2(25.00)的浮点+;,c++,C++,在我的作业中,我必须把串阀转换成浮阀 比如说 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})$(

在我的作业中,我必须把串阀转换成浮阀 比如说

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++类型<代码>浮点< /代码>的困难要求,请考虑使用定点类型。二进制浮点类型(偶数

double
)不能精确表示许多小数点(即使后者限制在小数点后两位)

文本输出的数字 如果您只需要以两位小数的格式显示/打印字符串中编码的数字,您有几个选项:

  • 通过验证后,将字符串转换为浮点格式,例如使用
    stof
    stod
    。然后简单地说。如果数字不太大,
    double
    的精度通常足以返回原始十进制值

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

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

  • “浮点”,您具体指的是C++类型<代码>浮点< /C>或只是任何(十进制?)分数表示吗?@山姆如果代码>100.00112 <代码>无效,这个数字转换为什么?以使这个有效?@山姆,然后将其转换为浮点,您需要获取字符串并发现用户在小数点后输入的值是否超过2个。您不想陷入先转换为float,然后再尝试确定float是否有两个十进制数字的麻烦之中。浮点是不精确的,一旦你把数字转换成浮点,你基本上就只能用那个数字了。对不起,我很困惑:一个值为99的浮点值与99.0,99.00或99.00000的值相同。。。您还必须输出精度为2的数字吗?实际上,我认为这样的要求实际上是为了简化解析十进制数的一般问题。