我如何格式化一个浮点数,使它不包含尾随零?换句话说,我希望得到的字符串尽可能短。
例如:
3 -> "3"
3. -> "3"
3.0 -> "3"
3.1 -> "3.1"
3.14 -> "3.14"
3.140 -> "3.14"
我如何格式化一个浮点数,使它不包含尾随零?换句话说,我希望得到的字符串尽可能短。
例如:
3 -> "3"
3. -> "3"
3.0 -> "3"
3.1 -> "3.1"
3.14 -> "3.14"
3.140 -> "3.14"
当前回答
以下是答案:
import numpy
num1 = 3.1400
num2 = 3.000
numpy.format_float_positional(num1, 3, trim='-')
numpy.format_float_positional(num2, 3, trim='-')
输出“3.14”和“3”
Trim ='-'删除后面的0和小数。
其他回答
对于float,你可以使用这个:
def format_float(num):
return ('%i' if num == int(num) else '%s') % num
测试:
>>> format_float(1.00000)
'1'
>>> format_float(1.1234567890000000000)
'1.123456789'
Decimal参见解决方案:https://stackoverflow.com/a/42668598/5917543
处理%f和你应该放
% .2f
,地点: .2f == .00浮动。
例子:
价格:%。2f" %价格[产品]
输出:
价格:1.50
以下是答案:
import numpy
num1 = 3.1400
num2 = 3.000
numpy.format_float_positional(num1, 3, trim='-')
numpy.format_float_positional(num2, 3, trim='-')
输出“3.14”和“3”
Trim ='-'删除后面的0和小数。
尝试一下,它将允许你添加一个“精度”变量来设置你想要的小数点后多少位。只要记住它会四舍五入。请注意,这只适用于字符串中有小数的情况。
number = 4.364004650000000
precision = 2
result = "{:.{}f}".format(float(format(number).rstrip('0').rstrip('.')), precision)
输出
4.364004650000000
4.36
如果你能接受3个。3.0以“3.0”的形式出现,这是一种非常简单的方法,从浮点数表示中右移零:
print("%s"%3.140)
(感谢@ellimilial指出了例外情况)