C/C++将double转换为具有最小非零数字的固定点

Nav*_*t F 5 c double

多个定点十进制数映射到相同的double值.例如:

double d1 = 132.24;
double d2 =  132.24000000000001;
Run Code Online (Sandbox Code Playgroud)

d1和d2具有相同的二进制值.

当使用具有14位精度的ostream将d1(或d2,它们具有相同的值)转换为字符串时,它将转换为:132.24000000000001.

是否存在支持从double-> string转换的方法/库,其中字符串是具有最小非零数字的定点值并且是有效转换?即在这种情况下,将d1转换为字符串将返回132.24000000000000(以14位精度显示)

Nav*_*t F 2

该库 https://github.com/floitschG/double-conversion 提供了带有 SHORTEST 选项的 DoubleToStringConverter::DoubleToAscii 方法:“SHORTEST:生成仍满足内部身份要求的最少数字量。”

非常感谢 iwillnotexist-idonotexist 为我指明了正确的方向。