划分两个浮点数不会给出确切的结果
Dividing two floats doesn't give exact result
我除以 9501/100.0f 期望得到 95.01f 的结果,但由于某种偏差的原因,结果是 95.01000000002f。
我知道四舍五入误差,并且除以两个较大的浮点数可能会给出不正确的结果,但这两个数字相对较小,它们不应该给出错误的答案。
我将浮点数更改为双精度,只是为了看到相同的结果。
所以我的答案是,为什么我会看到这个错误的输出?
并最终解决方法,而无需将数字复制到字符串并返回。
点数并不精确,处理它们有很多特质。
每个计算机科学家都应该知道的关于浮点运算的知识
我也喜欢布鲁斯·道森(Bruce Dawson)关于浮点值的博客文章。
点数是以二进制表示的数字,精度有限。
预期结果和实际结果之间的误差是由以下事实引起的:数字 95.01 在二进制表示中是无限周期的。
Double 只有 51 个二进制数字,因此在将数字存储在双精度之前必须进行一些舍入。单精度只有 23 位。
不可能在没有任何误差的情况下以有限精度浮点数表示 95.01。但是,您可能信任前 6-9 个十进制数字,因此您应该使用某种有意义的格式格式化数字。
啊,很好,我们中的另一个人已经成为编程教会的人:)
浮点数不精确,精度会因机器而异。 1.0f != 1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 使用提升将数据从 PyObject 复制到浮点数 *
- 如果偶数浮点数(分数数)的模数为 2,那么它不会给出'0'结果!在C++
- 分配给浮点数的积分文字除法 - 为什么结果是错误的?
- 浮点数的机器表示不是我预期的结果
- C++ to_string函数根据额外打印语句的先见之明,为浮点数和整数转换提供不同的结果
- 为什么整数/浮点数乘法会导致不同的结果
- 划分两个浮点数不会给出确切的结果
- 具有和不具有SSE(浮点数组乘法)的不同结果
- 用c++把两个浮点数相乘得到的结果是非数字的
- 输入第一个浮点数后出现奇数结果
- 浮点数和由于舍入行为导致的不正确结果
- 整数和浮点数之间的加法…结果是0
- 如何在x86汇编中移动两个浮点数的结果
- 我试图访问浮点数中的单个字节,我得到了意想不到的结果
- 为了得到最精确的结果,应该按哪个顺序添加浮点数
- 有可能的方法可以将两个从无符号 int 铸造的浮点数除以产生负浮点数结果
- 如何将浮点数与 int 正确相乘并获得仅受有效数字影响的结果