【发布时间】:2013-06-24 13:43:14
【问题描述】:
我希望在不丢失数据的情况下将字符串转换为浮点数;例如,如果我使用 istringstream 或 ::atof(x.c_str()) 我猜我会因为四舍五入而丢失数据。
通常这对我来说不是问题,但我使用的数据必须与其读取的数据相同。 这是一个数字及其转换为的示例。
-8.000001 -> -8
-0.6257381 -> -0.625738
12.0 -> 12 (drops the .0)
如果有人能帮助我,我将不胜感激
谢谢马特
【问题讨论】:
-
您确定不只是以较低的精度打印它们吗?我建议使用一些东西来转换其错误不是有效结果。
-
一般来说,这是不可能的,因为由于浮点数/双精度数的位数有限,您总是会出现舍入错误。此外,Base 10 中的舍入误差与 Base 2 中的舍入误差不同。另外,12.0 与二进制表示中的 12 相同,因此它们之间没有区别
-
本诺夫斯认为你的权利
-
对于初学者,您正在使用以 2 为底的数学进行以 10 为底的假设。计算机通常不做以 10 为基础的数学运算。如果你想要以 10 为基础的数学,那么你需要自己做,基于字符串或其他。
标签: c++ string floating-point