许多使用IEEE 754双精度的编程语言提供了一个库函数来将这些双精度转换为字符串.例如,C有sprintf,C++有stringstream,Java有Double.toString,等等.
在内部,这些功能是如何实现的?也就是说,他们使用什么算法将double转换为字符串表示,因为它们经常受到程序员选择的精度限制?
谢谢!
我们希望确保在将double值转换为字符串时保留最多10个小数点值.
当我们尝试%e或%f时,它不会保留超过5个小数点.当我们尝试%.14f时,小值(小于1.0e-20)未正确转换为字符串.
用于为double值保留最多10个小数点的格式字符串是什么?
我正在实施这个:
double x;
ostringstream x_convert;
x_convert << x;
string x_str = x_convert.str();
Run Code Online (Sandbox Code Playgroud)
这看起来有点多余.有更优雅的方式吗?