Python:数字太长怎么办? [复制]

Posted

技术标签:

【中文标题】Python:数字太长怎么办? [复制]【英文标题】:Python: what to do if the number is too long? [duplicate] 【发布时间】:2015-08-08 01:58:16 【问题描述】:

我正在尝试将poloar 转换为x-y 面板:

df['x']=df.apply(lambda x: x['speed'] * math.cos(math.radians(x['degree'])),axis=1)
df['y']=df.apply(lambda x: x['speed'] * math.sin(math.radians(x['degree'])),axis=1)
df.head()

这会产生

问题是x 太长了,怎么弄短一点?

我在How to turn a float number like 293.4662543 into 293.47 in python? 找到,我可以做"%.2f" % 1.2399,但如果这是一个好方法?

【问题讨论】:

也许这属于Code Review @cqcn1991:你的问题没有很好的定义。您已经找到了如何截断到特定数量的十进制数字。如果您不确定这是“一种好方法”,那么您的解决方案的实际限制是什么? @DanielPryden,我对此感到有点奇怪。我的意思是,如果大多数时候,数字看起来这么长,那么每个人都需要截断它们吗?这不是重复吗?所以我想知道是否还有其他方法。 @ZachGates,谢谢!没想到有这样的板子。 @cqcn1991 是什么让您产生“每个人都需要截断它们”的想法?出于我的目的,我通常对浮点的默认 Python 字符串表示感到满意。 【参考方案1】:

实际上,np.round 在这种情况下效果很好

> from pandas import DataFrame
> import numpy as np
> a = DataFrame(np.random.normal(size=10).reshape((5,2)))
0   1
0   -1.444689   -0.991011
1   1.054962    -0.288084
2   -0.700032   -0.604181
3   0.693142    2.281788
4   -1.647281   -1.309406

> np.round(a,2)
0   1
0   -1.44   -0.99
1   1.05    -0.29
2   -0.70   -0.60
3   0.69    2.28
4   -1.65   -1.31

您还可以通过简单地用舍入值覆盖单个列来舍入:

> a[1] = np.round(a[1],3)
> a
0   1
0   0.028320    -1.104
1   -0.121453   -0.179
2   -1.906779   -0.347
3   0.234835    -0.522
4   -0.309782   0.129

【讨论】:

所以,在大多数情况下,你先计算然后解析结果?还是把它留在那里?我主要担心的是x 看起来真的很ugly 通常,我发现我只在最后阶段进行四舍五入,当我打算将我的结果“显示”为表格并在此之前保留我的结果,如果你不想实际上更改数字但仍希望它们“看起来不错”您可以做的是使用熊猫显示选项。 pandas.set_option('precision', 3)

以上是关于Python:数字太长怎么办? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

文件名太长 删不了怎么办

文件名过长无法复制怎么解决

阿里云里oss图片上传的复制文件地址太长了,怎么办?

无法移动、剪切、复制文件 出现指定的文件名无效或太长

C++中的换行问题,就是某条语句太长,怎么把它分为两行或者三行?

指定的文件名无效或太长,请指定另一个文件名