2016-11-05 51 views
1

的最後一位我們都知道,如果我們想找到1182973981273983的最後一個數字是3,我們只是做到這一點:查找十進制數

>>> print(1182973981273983 % 10) 
3 

但是如果我想要得到的2387123.23最後一個號碼我正在考慮這樣做:

>>> 2387123.23 % 10 ** (-1 * 2) 
0.009999999931681564 

但它不起作用。獲得最後一個十進制數字的數學方法是什麼?

p.s.字符串解決方案無效。我們是程序員,我們需要知道數學如何工作。

+2

要做到四捨五入你使用字符串或BigDecimals的彩車將worek,你看他們是有嚴格規定,但四捨五入不實用看到http://stackoverflow.com/questions/588004/是浮點數學破解和你最後的評論[每個計算機科學家應該知道什麼關於浮點算術](每個計算機科學家應該知道什麼關於浮點算術) – Mark

+5

'3'不是最後一位小數,它只是格式化看起來這樣。 –

+0

字符串解決方案是有效的,因爲字符串格式化可以理解數學。如果你的意思是你想要理解浮點表示中的精度錯誤,那麼這是不同的。 –

回答

2

正如人們在評論中已經指出的那樣,浮點數是不可能的; 「最後一位小數」的概念根本不適用。請參閱評論中的鏈接瞭解更多詳情。

另一方面,如果您使用的是定點算術(即Decimal類型),這將起作用。然後向溶液中可能是這樣的:

>>> import decimal 
>>> d = decimal.Decimal('3.14') 
>>> d.as_tuple().digits[-1] 
4