在我的任务中,我必须把弦阀转换成浮子 例如
100将是100.00
100.0112无效
100.99将保持原样
99将是99.00
我正在考虑使用“stof”,但我仍然坚持如何设置2的精度。
答案 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
)不能精确地表示许多小数部分(即使后者限制在该点之后的两个小数位)。
如果您只需要以两位小数的格式显示/打印字符串中编码的数字,您有以下几种选择:
通过验证后,将字符串转换为浮点格式,例如使用stof
或stod
。然后只需output it with the wanted precision。 double
的精度通常应足以在数字不大的情况下返回原始十进制值。
或
通过验证后,将字符串转换为定点格式,然后输出。
或