㈠ python中如何减少计算浮点型乘除法
浮点数一个普遍的问题就是在计算机的世界中,浮点数并不能准确地表示十进制。并且,即便是最简单的数学运算,也会带来不可控制的后果。因为,在计算机的世界中只认识0与1。python中的decimal模块可以解决上面的烦恼
decimal模块中,可以通过整数,字符串或原则构建decimal.Decimal对象。如果是浮点数,特别注意因为浮点数本身存在误差,需要先将浮点数转化为字符串。
㈡ Python中的浮点数原理与运算分析
Python中的浮点数原理与运算分析
本文实例讲述了Python中的浮点数原理与运算。分享给大家供大家参考,具体如下:
先看一个违反直觉的例子:
>>> s = 0.
>>> for i in range(10): s += .1
>>> s
0.9999999999999999
# 错误被累加
再看一个更为普遍,直接影响判断逻辑的例子:
>>> from math import sqrt
>>> a = sqrt(2)
>>> a*a == a
False
之所以会出现以上的结果,在于 Python (更准确地说是计算机硬件体系结构)对浮点数的表示,我们来看计算机(基于二进制)对十进制小数 0.1 的表示,十进制小数向二进制小数转换的方法请见 Python十进制小数与二进制小数相互转换。将十进制小数 0.1 转换为二进制时的结果为 0.0001100110011001....,无限循环,计算机无法展示无限的结果,只能对结果进行截断,这是浮点数精度问题的根源。
“==” on floats
基于以上的考虑,当我们进行浮点数的相等比较时,要特别小心,直接使用 == 是有问题的,一种通用的做法即是,不是检测浮点数是否相等,而是检测二者是否足够接近,
>>> a = sqrt(2)
>>> abs(a*a-2) < epsilon
# 判断是否小于某一小量
㈢ python 乘法问题: 100*2.3 等于 229.99999999999997 这是为何
1、整形和浮点进行运算时,整形会转成浮点来运算
2、python中浮点(flaot)确实存在精度问题,具体原因是二进制和十进制转换中的限位问题,可以自行去翻翻资料查一查。
你尝试直接输出一个稍长的浮点数,例如2.2999999999999998,输出的是2.3对不对?
这就是精度问题
3、设计到浮点计算,可以用decimal来实现高精度运算
fromdecimalimportDecimal
Decimal(100)*Decimal(2.3)
4、除法只需要导入division即可
from__future__importdivision
然后就可以对浮点数进行精确除法计算了
㈣ python float 运算
Python 3.X对于浮点数默认的是提供17位数字的精度。
参考:http://www.cnblogs.com/herbert/p/3402245.html
实践出真知,尽信书不如无书
㈤ python中浮点数的处理
我感觉是python版本问题我这里用的3.2版本输出就是1.0
㈥ 如何利用Python设计语言操作各种不同的浮点数
方法/步骤
第一步,定义一个变量age并赋值为80,打印该变量值,如下图所示:
第二步,将定义的变量age跟字符串拼接到result变量中,打印result结果,结果发现出现类型错误,如下图所示:
第三步,利用str()函数将数字age转换成字符串,然后再次拼接到字符串中,如下图所示:
第四步,Python设计语言中的注释用“#”标识,注释是不打印出来的,如下图所示:
第五步,import this可以展示Python语言中的设计规则,如下图所示:
第六步,将浮点数0.2和0.4相加,结果发现结果不是0.6,如下图所示:
注意事项
注意使用浮点数操作运算
注意数字和字符串转换
㈦ python的浮点数运算是不是精度有问题阿
再计算机的硬件中,浮点数以二进制小数表示。比如小数
[python]view plain
0.125
可看做1/10+2/100+5/1000,同样的方式二进制小数
[python]view plain
0.001
这两个小数实际的值是相同的,唯一的不同是0.125是十进制表示,0.001是二进制表示。可是不幸的是,多数的十进制小数不能用二进制小数准确的表示。通常,你输入的十进制浮点数只能由存储在机器中的二进制浮点数近似表示。无论你使用多少位二进制数字,十进制的0.1都不能准确的由二进制小数表示,其是无限重复的小数
[python]view plain
0....
[python]view plain
0.0011010
实际中,我们很容易忘记存储的数据是原始十进制的的近似表示。Python只会显示出以二进制形式存储再计算机中的真正十进制数的近似数。如
[python]view plain
0.
[python]view plain
0.1
[python]view plain
>>>0.1+0.2
0.30000000000000004
[python]view plain
>>>round(2.675,2)
2.67
[python]view plain
>>>fromdecimalimportDecimal
>>>Decimal(2.675)
Decimal('2.')
㈧ Python 问题
你干脆用 cm 做单位,计算时 再转换为 米
要么都转换为 浮点数 再 相乘 相除
后面要相乘 相除,结果你让输入的浮点数 转换为 整数
㈨ python中常见的运算符有哪些
| 算术运算符 |
+:两个数相加两个数相加,或是字符串连接
-:两个数相减
*:两个数相乘,或是返回一个重复若干次的字符串
/:两个数相除,结果为浮点数
%:取模,返回两个数相除的余数
//:两个数相除,返回商的整数部分
**:幂运算,返回乘方结果
| 关系运算符 |
==:比较对象是否相等
!=:比较对象是否不相等
>:大于,例如a>b,将比较a与b的大小,a>b返回True,否则返回False
<:小于,例如a<b,将比较a与b的大小,a<b返回true,否则返回false< p="">
>=:大于等于,例如a>=b,将比较a与b的大小,a>=b返回True,否则返回False
<=:小于等于,例如a<=b,将比较a与b的大小,a<=b返回True,否则返回False
| 赋值运算符 |
=:常规赋值运算符,将运算结果赋值给变量
+=:加法赋值运算符,例如 a+=b 等效于 a=a+b
-=:减法赋值运算符,例如 a-=b 等效于 a=a-b
*=:乘法法赋值运算符,例如 a*=b 等效于 a=a*b
/=:除法赋值运算符,例如 a/=b 等效于 a=a/b
//=:取整除赋值运算符,例如 a//=b 等效于 a=a//b
%=:取模赋值运算符,例如 a%=b 等效于 a=a%b
**=:幂运算赋值运算符,例如 a**=b 等效于 a=a*b
| 逻辑运算符 |
and:与运算,如果a 为False,a and b返回False 否则返回y的计算值
or:或运算,如果a非0,返回a的值,否则返回b的值
not:非运算,如果a为True,返回False,如果a为False,返回True
| 成员运算符 |
in:如果在指定的序列中找到值返回True,否则返回False
not in:如果在指定的序列中找到值返回True,否则返回False
| 身份运算符 |
is:判断两个标识符是不是引用自一个对象
is not:判断两个标识符是不是引用自不同对象
㈩ Python3 浮点运算 求助
因为计算机并不能精确表示0.1,0.2,0.3这种数字。
计算机内部,实际存储的是其近似值:在咱们加法计算之前,Python内部存储的数,已经是带有误差的了。
这个近似值,是根据分数来的:表示一个浮点数,是两个整数的除法表示,而且除数必须是2的幂次。
至于运算结果正确,有两种情况:一是两个误差抵消了。二是系统对输出进行了控制,没有输出过长的误差值。