c++ - 将两个 float 相除并不能给出准确的结果

标签 c++ double precision

<分区>

我对 9501/100.0f 进行了除法,希望得到 95.01f 的结果,但由于某些不正常的原因,结果是 95.01000000002f。

我知道舍入错误,而且将两个较大的 float 相除会得到不正确的结果,但这两个数字相对较小,它们不应该给出错误的答案。

我已将 float 更改为 double ,但结果相同。

所以我的答案是,为什么我会看到这个错误的输出?

最终解决方法是不将数字复制到字符串并返回。

最佳答案

float 并不精确,处理它们有很多特殊之处。

What Every Computer Scientist Should Know About Floating-Point Arithmetic

我也喜欢 Bruce Dawson 的 blog entries关于浮点值。

关于c++ - 将两个 float 相除并不能给出准确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20668061/

相关文章:

c# - Json 属性 C# 的双重标签

C: 扫描的双数组值为什么变化?

java - 以给定的精度快速将double转成string

java - 为什么这个轴承计算如此不准确?

c++ - 逻辑短路是否不适用于 if-constexpr?

c++ - 查找给定圆中正方形数的算法

c++ - C++11 中的别名结构

c++ - 将 float 转换为 double

java - 如何防止小数除法时精度损失?

c++ - static_assert 无法将 const char* 模板参数识别为 constexpr : g++ bug?