c++ - 字符串到 float 的转换和格式化

标签 c++ qt qtcore

目前我有这样的东西

float a = SomeQString.toFloat(); //QString has 2.37

现在 float 是 2.3690000031..

我想要的是 2.3700000000.. 关于我如何做到这一点的任何建议?另外,为什么我得到的是 2.369 而不是 2.37?

最佳答案

(已经被询问和解释了很多次。)不可能在 float 中得到 2.37。不可能在 double 中获得 2.37。不可能以任何 IEEE-754 风格的二进制浮点格式获得 2.372.37 不能用这种二进制浮点格式精确表示。

阅读What Every Computer Scientist Should Know About Floating-Point Arithmetic

“获取”2.37 的一种可行方法实际上是将 2.369... 存储在 float 中(这就是您所做的已经),然后在您需要生成十进制表示时将其四舍五入为 2.37,即在您必须向用户呈现/输出值时。

关于c++ - 字符串到 float 的转换和格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18545092/

相关文章:

python - 使用 PyQt,监 window 口大小和调整布局的首选(有效)方法是什么?

c++ - 打印 Qt 变量

c++ - 全局对象和创建顺序

c++ - 从 VS2012 项目链接使用 VS2008 构建的静态库?它们兼容吗?

android - cocos2d-x & android 从assets文件夹加载文件

c++ - TBB 并行管道 : Filter Timing Inconsistent

c++ - 将二进制数据从 QML 传递到 C++

c++ - 在具有容量/调整大小的类中初始化 vector

c++ - Qt 5 是否支持异常?

c++ - 如何在 Qt 5.0.2 中添加/使用 <QtMath>