【发布时间】:2021-02-05 10:12:41
【问题描述】:
我需要将非常小的双精度数存储为字符串格式,然后再将它们反转。但是,当我尝试在像 4.7816457028269855e-143 这样的小数字上运行 std::to_string() 时,它只会变成 0。
我提到了Set precision of std::to_string when converting floating point values 及其链接副本。但是将精度设置为非常大的数字会在所有平台上解决这个问题吗?
如何解决这个问题?
使用 to_string() 的任何替代品都可以。
【问题讨论】:
-
嗯,它甚至没有那么小,因为 DBL_MIN = 2.2250738585072013830902327173324040642192159804623318306e-308
-
如果您正在寻找往返的高保真度,并且您想要文本而不是二进制,并且您不在乎文本是否不是很清晰,您可以使用浮点十六进制格式.
-
@Eljay 或者如果你需要足够新的编译器,你可以使用en.cppreference.com/w/cpp/utility/to_chars
标签: c++ floating-point double c++14 tostring