Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python比较运算符不工作,如果浮点(1)>;float(1)的计算结果为True,我缺少什么?_Python_Floating Point_Comparison_Floating Point Precision - Fatal编程技术网

python比较运算符不工作,如果浮点(1)>;float(1)的计算结果为True,我缺少什么?

python比较运算符不工作,如果浮点(1)>;float(1)的计算结果为True,我缺少什么?,python,floating-point,comparison,floating-point-precision,Python,Floating Point,Comparison,Floating Point Precision,不完全是1>1,而是接近: 我想比较两个时间戳,如果time>timestamp的计算结果为True,则执行一些操作。 这两个变量都具有相同的浮点值,如pdb中所示 (Pdb) print time 1396836917.98 (Pdb) print last_timestamp 1396836917.98 (Pdb) if time > last_timestamp: print 'wtf' wtf 我预计这将评估为False,这似乎是一个浮动问题: (Pdb) if float(ti

不完全是1>1,而是接近:

我想比较两个时间戳,如果time>timestamp的计算结果为
True
,则执行一些操作。 这两个变量都具有相同的
浮点值
,如pdb中所示

(Pdb) print time
1396836917.98
(Pdb) print last_timestamp
1396836917.98
(Pdb) if time > last_timestamp: print 'wtf'
wtf
我预计这将评估为
False
,这似乎是一个
浮动问题:

(Pdb) if float(time) > float(last_timestamp): print 'wtf'
wtf
int
比较工作正常

(Pdb) if int(time) > int(last_timestamp): print 'wtf'
因此,我预计代表数字的可用位的精度会出现问题

(Pdb) if float(time)*100 > float(last_timestamp)*100: print 'wtf'
wtf
但如果没有小数点,它仍然计算为
True

我现在的工作是

if int(time*100) > int(last_timestamp*100): print 'wtf'

但是我很想了解发生了什么,以及如何将
操作符正确地与
float
结合使用。

您使用的是哪种版本的Python
print
隐式调用
str
,在较早版本的Python中,它可以隐藏不同浮点之间的差异。请尝试打印
repr(时间)
repr(上次时间戳)
。如果浮动是不同的,
repr
将为它们生成不同的字符串。

您使用的是哪个版本的Python
print
隐式调用
str
,在较早版本的Python中,它可以隐藏不同浮点之间的差异。请尝试打印
repr(时间)
repr(上次时间戳)
。如果浮动是不同的,
repr
将为它们生成不同的字符串。

您使用的是哪个版本的Python
print
隐式调用
str
,在较早版本的Python中,它可以隐藏不同浮点之间的差异。请尝试打印
repr(时间)
repr(上次时间戳)
。如果浮动是不同的,
repr
将为它们生成不同的字符串。

您使用的是哪个版本的Python
print
隐式调用
str
,在较早版本的Python中,它可以隐藏不同浮点之间的差异。请尝试打印
repr(时间)
repr(上次时间戳)
。如果浮点数是不同的,
repr
将为它们生成不同的字符串。

这听起来像是一个理解浮点数的问题

基本上除了某些罕见的数字外,浮点数并不准确地存储数字,它们存储的数字与您认为看到的数字略有不同。例如(1-0.8!=0.2)

这是我写的一封关于Java的电子邮件,但实际上所有语言都有相同的行为:

尝试用Java计算(int)(4.1-0.1)(以及使用标准IEE浮点算法和截断整数转换的任何其他方法),得到的结果是3

有关更多示例,请参见:

如果将double转换为float,则会得到一组完全不同的值,这些值是错误的,但例如(int)(4.2f-0.2f)会给出错误的结果

对于SQL,您可以说明同样的事情:

        select CONVERT(INTEGER, CONVERT(float, 4.1)-CONVERT(float, 0.1))

这给出了3的结果。

这听起来像是一个浮点理解问题

基本上除了某些罕见的数字外,浮点数并不准确地存储数字,它们存储的数字与您认为看到的数字略有不同。例如(1-0.8!=0.2)

这是我写的一封关于Java的电子邮件,但实际上所有语言都有相同的行为:

尝试用Java计算(int)(4.1-0.1)(以及使用标准IEE浮点算法和截断整数转换的任何其他方法),得到的结果是3

有关更多示例,请参见:

如果将double转换为float,则会得到一组完全不同的值,这些值是错误的,但例如(int)(4.2f-0.2f)会给出错误的结果

对于SQL,您可以说明同样的事情:

        select CONVERT(INTEGER, CONVERT(float, 4.1)-CONVERT(float, 0.1))

这给出了3的结果。

这听起来像是一个浮点理解问题

基本上除了某些罕见的数字外,浮点数并不准确地存储数字,它们存储的数字与您认为看到的数字略有不同。例如(1-0.8!=0.2)

这是我写的一封关于Java的电子邮件,但实际上所有语言都有相同的行为:

尝试用Java计算(int)(4.1-0.1)(以及使用标准IEE浮点算法和截断整数转换的任何其他方法),得到的结果是3

有关更多示例,请参见:

如果将double转换为float,则会得到一组完全不同的值,这些值是错误的,但例如(int)(4.2f-0.2f)会给出错误的结果

对于SQL,您可以说明同样的事情:

        select CONVERT(INTEGER, CONVERT(float, 4.1)-CONVERT(float, 0.1))

这给出了3的结果。

这听起来像是一个浮点理解问题

基本上除了某些罕见的数字外,浮点数并不准确地存储数字,它们存储的数字与您认为看到的数字略有不同。例如(1-0.8!=0.2)

这是我写的一封关于Java的电子邮件,但实际上所有语言都有相同的行为:

尝试用Java计算(int)(4.1-0.1)(以及使用标准IEE浮点算法和截断整数转换的任何其他方法),得到的结果是3

有关更多示例,请参见:

如果将double转换为float,则会得到一组完全不同的值,这些值是错误的,但例如(int)(4.2f-0.2f)会给出错误的结果

对于SQL,您可以说明同样的事情:

        select CONVERT(INTEGER, CONVERT(float, 4.1)-CONVERT(float, 0.1))

这将在linux2上产生3个结果。

Python2.7.5+(默认值,2014年2月27日,19:37:08)[GCC 4.8.1]键入“帮助”、“版权”、“信用”或“许可证”以获取更多信息。
我将给
repr()
一个镜头,但我将时间戳收集为
string
,所以应该没有区别。
repr
。在哪里买不到也没关系