将string读入到float会产生不正确的精度
Reading string in to float produces incorrect accuracy
现在我明白float
s比double
更不准确,但这是否解释了当我有std::string
:
"7.6317"
and I do:
float x = atof(myString.c_str());
预期得到7.63170004 ?有没有办法让x的赋值只读取小数点后4位?或者这是因为浮点表示存储数字7.6317的方式?
是。这是意料之中的。这就是所谓的浮点误差。
一些浮点数在计算机中没有精确的表示,即使——用十进制表示——这些数字似乎是无害的。这是因为计算机使用2作为基数。因此,即使一个数字在以10为基数时可能有有限的表示,它在以2为基数时可能没有。
你可以这样做:
float x = floorf(val * 10000) / 10000;
我认为它应该工作!看看
相关文章:
- 使用2个键的cpp-stl::优先级队列排序不正确
- 正弦级数方程计算不正确
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 密码登录程序将永远循环并显示不正确的结果
- 在C++中返回不正确的楼层函数值
- 形状对象的旋转和缩放不正确C++
- C++ 读取文件读取文件不正确
- 关于类的 Python 文档 - 对C++的引用不正确
- 特征 LLT 模块给出不正确的结果?
- glibcxx STL 在实现 std::valarray::sum() 时是否不正确?
- 如果语句逻辑不正确
- 来自逆 vp 矩阵和相机位置的光线方向不正确
- 不正确的操作数类型 MSVC
- 数组填充了不正确的值
- 我是否不正确地集中了这些字符数组?
- 为什么除非我使用 cout,否则我的值不正确?
- 计算幂级数的数学结果不正确
- 为什么 sizeof 在 C++ 中给出不正确的字节数?
- 为什么当我使用双精度时,Qt<->Matlab 正确写入和读取我的字节,但存储 uint32 的字节不正确?
- 将string读入到float会产生不正确的精度