#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 1
|
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 对比和计算是大坑……
|