我尝试用浮点数在 Python 中进行除法,但即使我尝试使用浮点数,我得到的结果也不正确,但它没有用。python还有其他方法如何为大浮点数进行除法吗?
>>> div = 1.45751734864e+15/30933
>>> print div
47118525478.9
在java中相同
>>> double div = 1.45751734864e+15/30933;
>>> System.out.println(div);
4.711852547893835E10
我尝试用浮点数在 Python 中进行除法,但即使我尝试使用浮点数,我得到的结果也不正确,但它没有用。python还有其他方法如何为大浮点数进行除法吗?
>>> div = 1.45751734864e+15/30933
>>> print div
47118525478.9
在java中相同
>>> double div = 1.45751734864e+15/30933;
>>> System.out.println(div);
4.711852547893835E10
您可以使用十进制模块来提高精度。
>>> from decimal import *
>>> getcontext().prec = 30
>>> Decimal(1.45751734864e+15) / Decimal(30933)
Decimal('47118525478.9383506287783273527')
阅读:http ://docs.python.org/2/tutorial/floatingpoint.html和http://docs.python.org/2/library/decimal.html
Python 和 Java 返回的数字是一样的:
使用 python 2.7.3 的 IPython:
In [1]: 1.45751734864e+15/30933
Out[1]: 47118525478.93835
In [2]: 1.45751734864e+15/30933.0
Out[2]: 47118525478.93835
In [3]: 1.45751734864e+15/30933.0-4.711852547893835E10
Out[3]: 0.0
蟒蛇 3.3:
Python 3.3.0 (default, Mar 22 2013, 20:14:41)
[GCC 4.2.1 Compatible FreeBSD Clang 3.1 ((branches/release_31 156863))] on freebsd9
Type "help", "copyright", "credits" or "license" for more information.
>>> 1.45751734864e+15/30933
47118525478.93835
>>> 1.45751734864e+15/30933-4.711852547893835E10
0.0
>>>