
#coding=utf8 if __name__ == '__main__': x = 0.5 while x != 1.0: x = x + 0.1 print x #coding=utf8 if __name__ == '__main__': x = 0.8 # 如果换成0.8就对了,不过,可能还是浮点数问题 # 只是补充一下 #print(x+0.5 != 1.0) while x!=1.0: print(x != 1.0) print(type(x)) x = x + 0.1 print x 1 9hills 2016-03-23 18:19:57 +08:00 |
2 fds 2016-03-23 18:20:44 +08:00 浮点数判断相等不能直接用 ==,需要 while abs(x - 1) < 0.00001: |
3 fds 2016-03-23 18:26:57 +08:00 Python 3.5 的 math.isclose(x, 1) 也不错。但估计你用的版本没有这么高。 http://stackoverflow.com/questions/5595425/what-is-the-best-way-to-compare-floats-for-almost-equality-in-python |
4 kingmo888 2016-03-23 18:29:56 +08:00 换成>=不好吗? |
5 znoodl 2016-03-23 18:30:57 +08:00 via iPhone 浮点数 对比相等通病 |
6 fds 2016-03-23 18:32:44 +08:00 哦 写错了 是 while abs(x - 1) > 0.00001: |
7 bp0 2016-03-23 18:34:06 +08:00 @kingmo888 换成>= 可以退出循环,但是结果可能不是 @1989922yan 想要的。毕竟 1.0 和 1.1 差别还是很大的。 |
8 rming 2016-03-23 18:34:15 +08:00 学习了 |
9 bp0 2016-03-23 18:38:16 +08:00 @kingmo888 应该是换成<=,如果换成>= 则不会进入循环,直接输出 0.5 了。按照程序逻辑, @1989922yan 应该是想要输出 1.0 这个结果才对。 |
11 expkzb 2016-03-23 18:57:08 +08:00 via iPhone 学习了,还有这么坑的 |
12 wangxiwei18 2016-03-23 19:07:29 +08:00 等号两边的空格去掉试试 |
13 1989922yan OP @9hills 目测已是正解。 THX * 10^1000 |
14 cxbig 2016-03-24 03:46:56 +08:00 via iPhone float 对比和计算是大坑…… |