看一小段C语言程序:
在你心目中, 变量 I 是怎样的结果?
如果你理所当然地认为是3的话, 那么你就错了~~~
实际结果应该是2. 为什么?
简而言之, x在内存的值并不是精确的1.3, 实际上可能是1.29999999……
因为在计算机组成原因中有说过, 浮点数无法被准确地表示出来, 只能是一个非常精确的值..
就算现在你已经知道这个”坑”了, 但还是不小心会犯, 所以务必要牢记~~~
处理办法:
-
使用精度更高的double.
-
取整之前四舍五入(加上一个非常小的0.00000…….005, 但要注意浮点数的精度范围), 就像下面这样.
同时也要值得注意的是, 这个四舍五入的操作只能用于取整的时候, 你不能加在原浮点值上面改变了原来的浮点数值.
女孩不哭 @ cnblogs.com/memset @ 2014-05-02
Original: https://www.cnblogs.com/memset/p/c_float_precision_problem.html
Author: 女孩不哭
Title: 记C语言浮点数运算处理 “坑” 一则
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/536359/
转载文章受原作者版权保护。转载请注明原作者出处!