2013-04-15 33 views
-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 
+0

在我的32位系統中,我得到:'47118525478.93835' in Python – jamylak

+2

爲什麼這個數字不正確? Python會默認顯示一個固定數量的數字,以使該值更具可讀性,但這並不意味着該值本身不是更精確。 –

+0

@jamylak'print' div – TerryA

回答

0

通過Python和Java返回的數字是一樣的:

IPython中使用Python 2.7.3:

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 

的Python 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 
>>> 
1

Python和Java的結果是正確的

的Python

47118525478.9 

的Java

4.711852547893835E10 

然而,在Java中,號碼被印刷在exponential notation格式。所以,它相當於:

4.711852547893835 * 10 ^10 = 47118525478.9835

如果你要打印你的Python的爲指數符號格式輸出以及使用String format

>>> div = 1.45751734864e+15/30933 
>>> print '{:e}'.format(float(div)) 
4.711853e+10