双精度和浮点精度

2024-04-24 03:54:26 发布

您现在位置:Python中文网/ 问答频道 /正文

a = 2.3

b = a*100

print b

输出:230.0

print 2.3*100

输出:229.99999999999997

双精度乘法和浮点乘法是不同的。它是?在

对上述行为有何解释?在


Tags: 精度浮点print乘法
3条回答

我假设您使用旧的python2是因为您的print语句。当我运行您给出的代码时,对于两个print语句,我得到的结果是相同的:

Python 2.7.10 (default, Jul 14 2015, 19:46:27) 
>>> a = 2.3
>>> b = a*100
>>> print b
230.0
>>> print 2.3*100
230.0

我怀疑你在使用交互式python。这是从浮点转换为字符串的一个功能:

^{pr2}$

这说明了str(使用print)和{}(交互式python使用)之间的区别。在

快速的谷歌搜索给了我this.

基本上,浮点数用位(0-1)表示,类似于我们知道的用0-9表示的数字。很多数字都不能用这种方式精确地表示,就像我们不能精确地表示十进制的1/3(常规的0-9)。在

首先,Python只有一个浮点数类型,即float;没有double类型。在

现在,我不知道为什么,但是你的问题似乎归结到使用print。在

>>> 2.3*100
229.99999999999997
>>> print 2.3*100
230.0

那是Python2.7.10。有趣的是,这在3.5.1中没有出现:

^{pr2}$

相关问题 更多 >