將數字(如1234.5678)拆分爲兩部分(1234,0.5678)(即整數部分和小數部分)是否存在pythonic方法?在Python中將數字拆分爲整數和小數部分
回答
import math
x = 1234.5678
math.modf(x) # (0.5678000000000338, 1234.0)
>>> a = 147.234
>>> a % 1
0.23400000000000887
>>> a // 1
147.0
>>>
如果你想的整數部分爲整數,而不是一個浮點數,使用int(a//1)
代替。爲了獲得元組在一個單一的通道:(int(a//1), a%1)
編輯:請記住,the decimal part of a float number is approximate,所以如果你想表示它作爲一個人會做,你需要使用decimal library
對負數「-2.25 // 1 == -3.0」和「-2.25%1 == 0.75」的結果稍有混淆。這可能是OP想要的,因爲int部分+小數部分仍然等於原始值。相反,'math.modf(-2.25)==(-0.25,-2.0)'。 –
@安德魯 - 好點!無論如何,我認爲@ mhyfritz的答案是一個更好的答案! – mac
不錯的 - 我認爲這將是這裏顯示的最快的方法銘記安德魯克拉克負數的警告 – jacanterbury
intpart,decimalpart = int(value),value-int(value)
Works爲正數。
'In [1]:value = 1.89' '在[2]:intpart,decimalpart = int(value ),值INT(值)' '在[3]:intpart' '缺貨[3]:1' '在[4]:decimalpart' '缺貨[4]:0.8899999999999999' – iMom0
@ iMom0 - 請參閱http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html以及本網站上有關浮點精度的許多問題。 –
我們可以使用一個不着名的內置函數; divmod:
>>> s = 1234.5678
>>> i, d = divmod(s, 1)
>>> i
1234.0
>>> d
0.5678000000000338
爲負數提供可能不直觀的結果:'divmod(-4.5,1)'給出-5.0和0.5。使用'divmod(-4.5,-1)'給出4.0和-0.5。 – Holloway
這是我的方式做到這一點:
num = 123.456
split_num = str(num).split('.')
int_part = int(split_num[0])
decimal_part = int(split_num[1])
根據使用情況,這可能不適用於小數點後爲零的數字(例如123.0456) – Jon
您是對的:它取決於用例。如果你用123.0456嘗試它,結果是int_part = 123和decimal_part = 456.在我的用例中,我發現「清零」有用:) – holydrinker
這種形式允許得到所需的精確度:
>>> a = 1234.5678
>>> (lambda x, y : (int(x), int(x * y) % y/y))(a, 1e0)
(1234, 0.0)
>>> (lambda x, y : (int(x), int(x * y) % y/y))(a, 1e1)
(1234, 0.5)
>>> (lambda x, y : (int(x), int(x * y) % y/y))(a, 1e15)
(1234, 0.5678)
這也爲我的作品
>>> val_int = int(a)
>>> val_fract = a - val_int
如果您不介意使用NumPy,則:
In [319]: real = np.array([1234.5678])
In [327]: integ, deci = int(np.floor(real)), np.asscalar(real % 1)
In [328]: integ, deci
Out[328]: (1234, 0.5678000000000338)
- 1. 如何在計劃中將拆分數字分解爲整數和小數部分?
- 2. 想要分離python中浮點數的整數部分和小數部分
- 3. 如何在Python中將字符串拆分爲整數?
- 4. 在Python中,如何將字符串拆分爲多個整數?
- 5. awk拆分整數分成幾部分
- 6. 將Spark數據幀拆分爲部分
- 7. 將SSIS中的列拆分爲數字部分和列值的其餘部分
- 8. 用Haskell將數字拆分爲數字
- 9. 將只有零的浮點數作爲小數部分轉換爲整數的小數部分在Matlab中
- 10. 拆分和非拆分數據框分爲四部分
- 11. 如何在Swift中將小數部分轉換爲整數
- 12. 拆分浮點數到Ruby中的整數和小數點
- 13. 拆分整數字符串
- 14. 將32位整數拆分爲4部分
- 15. C++如何將字符串拆分爲字符串和整數?
- 16. 將字符串拆分爲字符和整數C++
- 17. 將字符串拆分爲整數和字符串C++
- 18. 分割數爲整數和小數
- 19. 關於將數字拆分爲數千
- 20. 將行拆分爲每月行數和拆分天數
- 21. 將r中的數據幀拆分爲字符和數字
- 22. 將輸入拆分爲整數
- 23. Django自定義小部件將整數字段拆分爲模型表單中的小時和秒字段
- 24. 將double的小數部分轉換爲整數?在JAVA
- 25. 如何在python中將字符串拆分爲多個部分?
- 26. 數組大小和字符串拆分
- 27. 將整數串拆分爲所有可能的數字列表
- 28. 將整數拆分爲其單獨的數字
- 29. 如何將字符串拆分爲整數數組?
- 30. 從字母數字中拆分數字部分
完美!與負面效果很好!謝謝 –
應用math.modf(x)後,我該如何處理結果值?例如,如果我將1234.0分配給一個變量,我該怎麼做? – hakiko
dec,int = math.modf(1234.5678) – gbtimmon