gpt4 book ai didi

c++ - 在分配给 double 变量后检索字符串 “0.1”

转载 作者:太空宇宙 更新时间:2023-11-04 13:49:25 25 4
gpt4 key购买 nike

我有一个关于高精度数字转换的幼稚问题(此处为 C++)。

假设用户用这条语句将0.1赋值给double变量x_d,

x_d = 0.1

众所周知,由于不可避免的机器舍入,因此得到的x_d不再是0.1

我想知道我们是否还有办法从 double 变量x_d中取回原始的高精度字符串“0.1”?很明显,这里使用std::to_string(x_d)是没有用的。即使是boost::multiprecision 或MPFR 这样的高精度库似乎也束手无策。例如,std::to_string(boost:cpp_dec_float_10000(x_d) ) 无法恢复丢失的精度。

所以我的问题是,我们能否从使用语句 x_d = 0.1 分配的 double x_d 中检索回字符串“0.1”?

最佳答案

假设在赋值过程中,十进制数 0.1 被四舍五入为不等于十进制数 0.1 的 double 值 X。现在,假设值 X 中有一些其他计算结果,但没有对其进行四舍五入。为了区分这两者,您必须将原点存储在某处。为此,double 中根本没有位置(假设常见的实现),因此您的问题的答案是“否”。

关于c++ - 在分配给 double 变量后检索字符串 “0.1”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24132497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com