Python 限制浮动以减少数据大小
我使用Python 限制浮动以减少数据大小,python,formatting,Python,Formatting,我使用round()将浮点限制为n小数点,但是我拥有的数据有很多可以减少的值 例如: 0.0 to 0 -0.0 to 0 0.12 to .12 -0.12 to -.12 1.0 to 1 如何使用python实现这一点?因此,您希望在字符级别缩减数字。使用正则表达式: if n == 0: # Takes care of 0.0, -0.0, 0000.000, etc. m = "0" elif type(n) == int: # Takes care of int
round()
将浮点限制为n
小数点,但是我拥有的数据有很多可以减少的值
例如:
0.0 to 0
-0.0 to 0
0.12 to .12
-0.12 to -.12
1.0 to 1
如何使用python实现这一点?因此,您希望在字符级别缩减数字。使用正则表达式:
if n == 0: # Takes care of 0.0, -0.0, 0000.000, etc.
m = "0"
elif type(n) == int: # Takes care of integer numbers
m = re.sub(r'^(-)?0+', r'\1', str(n))
elif n > 0: # Takes care of fp positive numbers
m = re.sub(r'^0+|\.?0+$', '', str(n))
else: # Takes care of fp negative numbers, DIY
因此,您希望在字符级别缩小数字。使用正则表达式:
if n == 0: # Takes care of 0.0, -0.0, 0000.000, etc.
m = "0"
elif type(n) == int: # Takes care of integer numbers
m = re.sub(r'^(-)?0+', r'\1', str(n))
elif n > 0: # Takes care of fp positive numbers
m = re.sub(r'^0+|\.?0+$', '', str(n))
else: # Takes care of fp negative numbers, DIY
x=“”0.0
-0.0
0.12
-0.12
1
12
-12.00
12.001
-12.001
10.01
-10.01
00.12"""
def repl(匹配对象):
返回“”。join(如果为i,则在matchobj.groups()中为i)
打印re.sub(r”(?)(:\b0+(\。\d)(\d*)(?x=“”)0.0
-0.0
0.12
-0.12
1
12
-12.00
12.001
-12.001
10.01
-10.01
00.12"""
def repl(匹配对象):
返回“”。join(如果为i,则在matchobj.groups()中为i)
打印子目录(r“(?)(:\b0+(\.\d)(\d*)(?)?
Py3样式的常规浮点格式格式
:
In [361]: '{}, {}, {}, {}, {}'.format(*alist)
Out[361]: '0.0, -0.0, 0.12, -0.12, 1.0'
n
(或g
)格式可以部分满足您的要求:
In [362]: '{:n}, {:n}, {:n}, {:n}, {:n}'.format(*alist)
Out[362]: '0, -0, 0.12, -0.12, 1'
它仍然包括0.12
的前导0
Py3样式的常规浮点格式格式
:
In [361]: '{}, {}, {}, {}, {}'.format(*alist)
Out[361]: '0.0, -0.0, 0.12, -0.12, 1.0'
n
(或g
)格式可以部分满足您的要求:
In [362]: '{:n}, {:n}, {:n}, {:n}, {:n}'.format(*alist)
Out[362]: '0, -0, 0.12, -0.12, 1'
它仍然包括0.12
的前导0
数据大小是多少?浮点数的大小不取决于小数位数。数据被打印并保存到文件中。为什么需要减小文件的大小?数据大小是多少?浮点数的大小不取决于数字小数点的位置。数据被打印并保存到一个文件中。为什么你需要减小文件的大小?为什么在输出的第一行有空格?@TigerhawkT3是否有向下投票的原因或者它仍然是复仇模式?我没有向下投票,但我想我知道为什么它被向下投票。OP问如何减小四舍五入浮点的大小ng点数字。您的解决方案使用的字符串恰好具有浮点数的多个字符表示形式。您解决的是另一个问题,RE的复杂性很大程度上是由于解析字符串。@DYZ我不懂u…。您的解决方案和我的解决方案做的是相同的事情…结果是相同的,但输入是相同的不同。您的x
是所有OP数值的串联字符串表示形式。要构建x
,必须执行“”。连接(str(n)表示n个数字)
-然后您的RE将其再次分解为单独的片段,修复每个片段,然后再连接一次。有什么意义?为什么输出的第一行中有空格?@TigerhawkT3是否有拒绝投票的原因,或者它仍然是复仇模式?我没有拒绝投票,但我想我知道为什么被拒绝投票。OP问如何取消投票导出四舍五入浮点数的大小。您的解决方案使用的字符串恰好具有浮点数的多个字符表示形式。您解决的是另一个问题,RE的复杂性很大程度上是由于解析字符串。@DYZ我不懂u…。您的解决方案和我的解决方案做的是相同的…结果是t相同,但输入不同。您的x
是所有OP数值的串联字符串表示形式。要构建x
,必须执行“”。连接(str(n)表示n个数字)
-然后您的RE将其再次分解为单独的片段,修复每个片段,并再次连接。这有什么意义?如果它仍然包含0
的前导0
,用于0
和1
之间的浮动,它不是不够吗?-0
看起来有点邪恶。是否值得删除前导的0?更好使用已定义的格式化工具,而不是通过模糊的正则表达式传递值来保存一两个字符。不过,保存一两个字符似乎是关键。如果它仍然包含0
和1
之间浮动的前导0
,这不是不够吗?-0
看起来有点邪恶。值得吗删除前导0?最好使用定义的格式工具,而不是通过模糊的正则表达式传递值来保存一两个字符。不过,保存一两个字符似乎是关键。