-3

我尝试用浮点数在 Python 中进行除法,但即使我尝试使用浮点数,我得到的结果也不正确,但它没有用。python还有其他方法如何为大浮点数进行除法吗?

>>> div = 1.45751734864e+15/30933
>>> print div
47118525478.9

在java中相同

>>> double div = 1.45751734864e+15/30933;
>>> System.out.println(div);
4.711852547893835E10
4

3 回答 3

2

Python 和 Java 结果都是正确的:

蟒蛇

47118525478.9

爪哇

4.711852547893835E10

但是,在 Java 中,数字以指数符号格式打印。所以,它相当于:

4.711852547893835 * 10 ^10 = 47118525478.9835

如果您想将 Python 的输出打印为指数符号格式,请使用字符串格式

>>> div = 1.45751734864e+15/30933
>>> print '{:e}'.format(float(div))
4.711853e+10
于 2013-04-15T11:39:49.893 回答
1

您可以使用十进制模块来提高精度。

>>> 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

于 2013-04-15T11:29:41.697 回答
0

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
>>> 
于 2013-04-15T11:25:51.127 回答