gpt4 book ai didi

c++ - Qt QString 中错误的字符串到双重转换

转载 作者:行者123 更新时间:2023-11-30 00:46:25 26 4
gpt4 key购买 nike

我从 QString 到 double 的转换值是错误的。下面是我的代码。

QString value = "0.525";
bool status = false;
double doubleVal = value.toDouble(&status);

我为 doubleVal 得到的值是 0.52500000000000002。我原以为它是 0.525

有人可以帮我解决这个问题吗?谢谢。

最佳答案

如果不幸的是太普遍了,那么您的期望是没有根据的。您只能确定所有非整数实数在任何基数的位置系统中都具有无限长度表示(参见 this answer )。

有理数的有限长度表示仅存在于某些 基中。碰巧有理数 525/1000 在基数 2 中没有有限长度表示;该基数的表示为 0.100001(1001)。它有一个以 10 为基数的有限长度表示(以及其他)。

double{0.525} 只有以 10 为底的无限长度表示。数字 0.52500000000000002 被截断为覆盖尾数位数的小数位数在 IEEE-754 double 二进制表示中。

由于 floatdouble 是 base-2 系统中的位置表示,您应该预料到任何非整数实数都需要无限长度的表示被准确表示,并且只有一些能够以有限的长度表示。

关于c++ - Qt QString 中错误的字符串到双重转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38657658/

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