将数字(如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