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?最好使用定义的格式工具,而不是通过模糊的正则表达式传递值来保存一两个字符。不过,保存一两个字符似乎是关键。